2016-09-05 4 views
3

Swarm 독립 실행 형을 사용하여 다른 가상 시스템에서 클러스터 응용 프로그램을 실행하고 버전 2를 도킹 작성하려고 시도합니다. 오버레이 네트워크가 설정되었습니다. 그러나 특정 컨테이너에서 특정 컨테이너를 강제 실행하려고합니다. 문서에서docker-compose swarm : 컨테이너가 특정 호스트에서 실행되도록합니다.

조언이 따르고 있지만,이 매개 변수와 나는 전혀 용기 시작할 수 없습니다 :

environment: 
    - "constraint:node==node-1" 

ERROR: for elasticsearch1 Cannot create container for service elasticsearch1: Unable to find a node that satisfies the following conditions 
[available container slots] 
[node==node-1] 

우리는 노드 1 노드 2로 호스트를 등록해야

을 ... 또는 그것이 기본적으로 완료됩니다. 유산이 떼의 버전 (독립형)에 대한

[[email protected] ~]# docker node ls 
Error response from daemon: 404 page not found 
[[email protected] ~]# docker run swarm list 
[[email protected] ~]# 

[[email protected] ~]# docker info 
Containers: 8 
Running: 6 
Paused: 0 
Stopped: 2 
Images: 8 
Server Version: swarm/1.2.5 
Role: primary 
Strategy: spread 
Filters: health, port, containerslots, dependency, affinity, constraint 
Nodes: 2 
ux-test16.rs: 10.212.212.2:2375 
    â ID: JQPG:GKFF:KJZJ:AY3N:NHPZ:HD6J:SH36:KEZR:2SSH:XF65:YW3N:W4DG 
    â Status: Healthy 
    â Containers: 4 (4 Running, 0 Paused, 0 Stopped) 
    â Reserved CPUs: 0/2 
    â Reserved Memory: 0 B/3.888 GiB 
    â Labels: kernelversion=3.10.0-327.28.3.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper 
    â UpdatedAt: 2016-09-05T11:11:31Z 
    â ServerVersion: 1.12.1 
ux-test17.rs: 10.212.212.3:2375 
    â ID: Z27V:T5NU:QKSH:DLNK:JA4M:V7UX:XYGH:UIL6:WFQU:FB5U:J426:7XIR 
    â Status: Healthy 
    â Containers: 4 (2 Running, 0 Paused, 2 Stopped) 
    â Reserved CPUs: 0/2 
    â Reserved Memory: 0 B/3.888 GiB 
    â Labels: kernelversion=3.10.0-327.28.3.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper 
    â UpdatedAt: 2016-09-05T11:11:17Z 
    â ServerVersion: 1.12.1 
Plugins: 
Volume: 
Network: 
Swarm: 
NodeID: 
Is Manager: false 
Node Address: 
Security Options: 
Kernel Version: 3.10.0-327.28.3.el7.x86_64 
Operating System: linux 
Architecture: amd64 
CPUs: 4 
Total Memory: 7.775 GiB 
Name: 858ac2fdd225 
Docker Root Dir: 
Debug Mode (client): false 
Debug Mode (server): false 
WARNING: No kernel memory limit support 
+0

'docker run swarm list'의 출력을 인쇄하여 노드 이름을 확인하십시오. – Alkaline

+0

오, 또한 기존의 Docker Swarm에 대해 묻는 것이지, 새로운 "Swarm mode"가 아니라는 점을 분명히 밝혀주십시오. – Alkaline

+0

님이 질문에 누락 된 정보가 있음 – user3292147

답변

2

첫 번째 대답은 "군중 모드"입니다. 그 이후로 당신은 기존의 Swarm을 사용하고 있고 더 많은 정보를 추가했음을 명확히했습니다. 따라서 여기 :

당신이 열거 한 제약 조건은 호스트가 node-1이라고 가정합니다. 호스트 이름은 ux-test16.rsux-test17.rs입니다. 제약 조건에 node-1 대신 그 값을 사용하십시오. 예 :

environment: 
    - "constraint:node==ux-test16.rs" 
+0

감사합니다. – user3292147

+0

답변으로 표시하는 것을 잊지 마십시오. – Alkaline

3

환경 변수constraint에만 유효합니다. 새로운 "Swarm Mode"는 mode 또는 constraints 옵션을 사용합니다 (환경 변수 아님).

노드 당 하나의 작업 (컨테이너)을 적용하려면 mode=global을 사용하십시오.

docker service create --name proxy --mode global nginx 

기본 모드는 떼 관리자가 --replicas 옵션에 지정된 수를 충족하기 위해 가능한 모든 노드에 걸쳐 작업 (컨테이너)를 만들 것을 의미하는 replicated입니다. 예 :

docker service create --name proxy --replicas 5 nginx 

다른 호스트 (노드)를 기반으로 제약, 라벨, 역할을 적용하려면, 아이디의이 --constraint 옵션을 사용합니다. 예를 들면 : 다른

뭔가 :

docker service create --name proxy --constraint "node.hostname!=node01" nginx 

https://docs.docker.com/engine/reference/commandline/service_create/#/specify-service-constraints

편집 2016년 9월를 참조하십시오. docker-compose은 현재 "군집 모드"에서 지원되지 않습니다. 군단 모드는 새로운 dab 형식을 대신 인식합니다. 도커 작성 파일을 DAB로 변환하는 방법이 있지만 실험적이므로이 시점에서 의존해서는 안됩니다. 모든 docker service create ...을 직접 호출하는 bash 스크립트를 작성하는 것이 좋습니다.

편집 2017년 3월 :

고정 표시기 1.13 (17.03)로, 고정 표시기-작성 지금 직접 소량 단계를 처리하지 않고 제공 떼 환경에 사용할 수 있습니다.

+0

죄송합니다. 새로운 독창적 인 버전에서 지원되는 명령이 아닌 독립 실행 형 맹약을 사용하고 있음을 지정하는 것을 잊어 버렸습니다. 이전 버전을 사용하는 이유는 docker 실험 버전을 설치하지 않으면 docker-compose를 지원하지 않기 때문입니다. – user3292147

+0

기존의 따뜻한 환경 설정이 없지만 'node-1' 호스트가 있다고 가정하면 제약 조건이 작동합니다. 나는 정말로 당신이 "떼 짓기 모드"로 이동할 것을 제안합니다. 영사관 작성 파일을 멍청한 bash 또는 Makefile로 변환하는 데 소비되는 시간은 영사관, TLS 및 기타 자료를 설치하지 않아도되는 막대한 노력을 절약 할 수 있으므로 여전히 가치가 있습니다. – Alkaline

+0

조언 해 주셔서 감사합니다. 군대와 함께 elasticserch 클러스터를 실행 중입니다. 노드는 동일한 복사본이 아니지만 서로 통신하고 일부는 일부 클라이언트/데이터 노드를 마스터합니다. 나는 이것이 실현 가능하고 도커가 없으면 너무 복잡하다고 확신하지 못한다. – user3292147

관련 문제