Docker Swarm을 사용하여 Hello World 컨테이너를 다중 호스트 환경에서 시작
8066 단어 Docker
개요
Docker 공식 공개 전시 도구 중 하나인 Docker Swarm을 사용하여 여러 호스트를 뛰어넘는 Docker 환경에서 Hello World를 출력하는 컨테이너를 실행합니다
Hello World
Docker 호스트 준비
Docker 호스트 3대
core-01
, core-02
, core-03
를 준비합니다.2375
를 모든 포트에서 사용할 수 있음core@core-01 ~ $ docker -v
Docker version 1.5.0, build a8a31ef-dirty
core@core-02 ~ $ docker -v
Docker version 1.5.0, build a8a31ef-dirty
core@core-03 ~ $ docker -v
Docker version 1.5.0, build a8a31ef-dirty
Swarm 설치
swarm
이미지에 pullcore@core-01 ~ $ docker pull swarm:latest
core@core-02 ~ $ docker pull swarm:latest
core@core-03 ~ $ docker pull swarm:latest
클러스터 생성
집단을 이루다.명령을 수행할 수 있는 호스트
swarm create
# at core-01
core@core-01 ~ $ docker run --rm swarm create
129c52f89e17cc99bbcb4126f7906d9a
Swarm 에이전트 시작
모든 호스트에서 swarm 에이전트를 시작합니다.
# NODE_IP は swarm manager がアクセス可能ならば Public でも Private でも良い
$ docker run \
-d \
swarm \
join \
--addr=<NODE_IP:2375> \
token://<CLUSTER_ID>
core@core-01 ~ $ docker run
-d \
swarm \
join \
--addr=172.17.8.102:2375 \
token://129c52f89e17cc99bbcb4126f7906d9a
f7905da5377523b349c502c3aa2d8a66ade19896bd9da84115220d325a4deb24
core@core-02 ~ $ docker run
-d \
swarm \
join \
--addr=172.17.8.101:2375 \
token://129c52f89e17cc99bbcb4126f7906d9a
1f9d34a98272a4482e6923c37e045435bc9d3d61c520613007e6017a32b7d708
core@core-03 ~ $ docker run
-d \
swarm \
join \
--addr=172.17.8.103:2375 \
token://129c52f89e17cc99bbcb4126f7906d9a
9f95ea43ba7071e8d8cb0039c1f39439c232bed10abd035d1236f24d51ebb212
Swarm 관리자 시작
어떤 견우라도 가능하기 때문에 swarm 관리자를 만듭니다.
$ docker run \
-d \
-p <SWARM_PORT>:2375 \
swarm \
manage \
token://<cluster_id>
core@core-01 ~ $ docker run \
-d \
-p 2377:2375 \
swarm \
manage \
token://129c52f89e17cc99bbcb4126f7906d9a
69f63a903c27da19a9d13f48cacce9a1d733a3bef2526eab8daaad63055b5807
이렇게 해서 집단 환경이 형성되었다.클러스터 Docker 사용
기존 Docker API 호환 API를 제공하므로 위에서 설명한 대로
docker
명령을 실행할 수 있습니다.core@core-01 ~ $ docker -H tcp://localhost:2377 info
Containers: 4
Nodes: 3
core-03: 172.17.8.103:2375
└ Containers: 1
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 998 MiB
core-01: 172.17.8.101:2375
└ Containers: 2
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 998 MiB
core-02: 172.17.8.102:2375
└ Containers: 1
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 998 MiB
Hello World# クラスタ内のどこかで hello world コンテナを走らせる
core@core-01 ~ $ docker -H tcp://localhost:2377 run -i busybox:latest echo hello world
hello world
전체 클러스터ps
core@core-01 ~ $ docker -H tcp://localhost:2377 ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a116c414076e busybox:buildroot-2014.02 "echo hello world" 15 seconds ago Exited (0) Less than a second ago core-03/condescending_hopper
69f63a903c27 swarm:latest "/swarm manage token 5 minutes ago Up 5 minutes 172.17.8.101:2377->2375/tcp core-01/grave_turing
9f95ea43ba70 swarm:latest "/swarm join --addr= 9 minutes ago Up 9 minutes 2375/tcp core-03/trusting_colden
1f9d34a98272 swarm:latest "/swarm join --addr= 9 minutes ago Up 9 minutes 2375/tcp core-02/focused_goodall
f7905da53775 swarm:latest "/swarm join --addr= 12 minutes ago Up 11 minutes 2375/tcp core-01/grave_wozniak
그룹에서 Hello World 용기 삭제core@core-01 ~ $ docker -H tcp://localhost:2377 rm a116c414076e
Hello World와 지속적으로 출력되는 컨테이너를 시험적으로 운행해 보다core@core-01 ~ $ docker -H tcp://localhost:2377 run \
-d \
--name hello \
busybox:latest \
/bin/sh -c "while true; do echo hello world; sleep 1; done"
347de1fa81d97aa45451353efbd9a08e7f8f800fe4590bdeefec1d91c6c1edf5
logs
core@core-01 ~ $ docker -H tcp://localhost:2377 logs -f hello
hello world
hello world
hello world
hello world
hello world
컨테이너 이름은 그룹 내에서 유일하기 때문에 같은 이름을 가진 컨테이너를 시작하려면 오류가 발생합니다.core@core-01 ~ $ docker -H tcp://localhost:2377 run -d --name hello busybox:latest echo hello
FATA[0000] Error response from daemon: Conflict, The name hello is already assigned to 347de1fa81d97aa45451353efbd9a08e7f8f800fe4590bdeefec1d91c6c1edf5. You have to delete (or rename) that container to be able to assign hello to a container again.
전체 클러스터 이미지 목록견우 한 명씩 보고 싶어서 아쉬운데?core@core-01 ~ $ docker -H tcp://localhost:2377 images | grep busybox | sort
busybox latest 4986bf8c1536 8 weeks ago 2.43 MB
busybox latest 4986bf8c1536 8 weeks ago 2.43 MB
# pull はできないもよう
core@core-01 ~ $ docker -H tcp://localhost:2377 pull busybox
FATA[0000] Error: Not supported in clustering mode.
집단 내의 기계 목록을 봐라.core@core-01 ~ $ docker run --rm swarm list token://129c52f89e17cc99bbcb4126f7906d9a
172.17.8.102:2375
172.17.8.101:2375
172.17.8.103:2375
REF
Reference
이 문제에 관하여(Docker Swarm을 사용하여 Hello World 컨테이너를 다중 호스트 환경에서 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/spesnova/items/47fa9ba3e8aa3721384c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)