[docker] Docker Swarm

도커 스웜 상태 보기

docker info | grep Swarm

클러스터 관리

도커 스웜 매니저 노드 시작

docker swarm init --advertise-addr 192.168.0.100

도커 스웜 워커가 클러스터에 참여

docker swarm join --token SWMTKN-1-sdlfhsalkghsalghlsahglksahglsakg... 192.168.0.100:2377

도커 스웜 클러스터 확인

docker node ls

새로운 매니저 추가를 위한 토큰 생성

docker swarm join-token manager

워커 노드에서 참여 더이상 하지 않고 노드 삭제

docker swarm leave

매니저 노드의 참여 삭제

docker swarm leave --force

워커 노드를 매니저 노드로 변경. 매니저 노드에서

docker node promote swarm-worker1

매니저 노드를 워커 노드로 변경.

docker node demote swarm-worker1

서비스

서비스 생성

docker service create \
ubuntu:14.04 \
/bin/sh -c "while true; do echo hello world; sleep 1; done"

서비스 목록 확인

docker service ls

서비스 정보 확인

docker service ps [service name]

서비스 삭제

docker service rm [service name]

secret / config

secret 생성

echo 1q2w3e4r | docker secret create my_mysql_password -

secret 사용 (기본 값은 테이너 내부의 /run/secrets/ 디렉토리에 마운트됨)

docker service create \
 --name mysql \
 --replicas 1 \
 --secret source=my_mysql_password,target=mysql_root_password \
 --secret source=my_mysql_password,target=/home/mysql_root_password \
 -e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" \
 ...
 mysql:5.7

config 생성

docker config create registry-config config.yml

config 목록 확인

docker config ls

config 내용 확인

docker config inspect registry-config

config로 입력된 값 확인. config 내용 확인에서 “Spec” / “Data” 내에 dmVyc21vbjog… 이 있었다고 하면, 해당 내용은 base64로 encoding 되어 있기 때문에..

echo dmVyc21vbjog... | base64 -d

config 사용

docker service create --name yml_registry -p 5000:5000 \
 --config source=registry-config,target=/etc/docker/registry/config.yml \
 registry:2.6

변경은 docker service update--config-rm, --config-add, --secret-rm, --secret-add 로 삭제, 추가 가능.

도커 스웜 네트워크

네트워크 목록 확인

docker network ls

오버레이 네트워크 생성

docker network create \
--subnet 10.0.9.0/24 \
-d overlay \
myoverlay

오버레이 네트워크 사용

docker service create --name overlay_service \
--network myoverlay \
--replicas 2 \
dasomoli/book:hostname

docker run –net 으로 지정해서 사용 가능한 오버레이 네트워크 생성

docker network create \
-d overlay \
--attachable \
myoverlay2