3 min read

도커 스웜 명령어

도커 스웜 명령어
Photo by Todd Cravens / Unsplash

매니저 노드에서 일단 확인
docker node ls

워커에서 조인할 꺼 알려줌
docker swarm join-token worker

나는 미리 zero-tier로 vpn으로 다 묶어놓음. 그러면 스웜포트 별도 개방 안해도 됨.
그리고 zertier를 대역대로 방화벽도 개방해 놓음
(이건 별도 설명 필요함~)

그래서 이렇게 나옴.

요걸 복사해서
1. 도커 설치
2. 워커노드에 그대로 복사

그러면 이렇게 되면 끝

다시 매니저 노드에서 확인
나는 이렇게 OCI VM과 집 미니 PC의 proxmox로 생성한 우분투 리눅스를 도커 스웜으로 묶어 버림.

💡
도커 스웜 네트워크 생성

docker network create --driver overlay --attachable dbnet

💡
도커 시크릿 생성

비밀번호 키 생성, 이러면 yml에 비밀번호를 담지 않아도 된다.
echo "password" | docker secret create 명칭 -

나중에 yml에 써먹는다.

그 외 토큰값이나 환경 값을 설정해 놓으면 여러 중복된 서비스들에 설정해도 편리하다.

💡
도커 배포 명령어

docker stack deploy -c /docker/DB/DB.yml db --detach=false

docker stack deploy -c yml경로 stack이름 기본 옵션

자주써서 alias로 걸어놓음
alias dc='docker stack deploy -c'
—수정–
그랬다가 .sh 만들어 버림.

디렉토리 구조를 단순화 해서 /yaml에 모든 배포 문서를 모아놓고

#!/bin/bash

SERVICE=$1

if [ -z "$SERVICE" ]; then
  echo "Usage: $0 <service>"
  exit 1
fi

read -p "Stack name [$SERVICE]: " STACK
STACK=${STACK:-$SERVICE}

docker stack deploy -c "/yaml/${SERVICE}.yml" "$STACK" --detach=false
  • #:deploy.sh yml파일 ->스택명 으로 만들어 버림

💡
docker swarm leave --force

옛날에 매니저에서 이거를 썻다가 도커 클러스터 자체가 해지되는 일이 있었음.
복구하느라 진땀을 뺐는데... 다행히도 yaml 파일 기반이라 도커가 설치도 쉽지만 해지도 이렇게 쉽게(?) 될 줄은 몰랐다. force 명령어 못하게 docker swarm leave 만해도 경고 를 충분히 하는데도 에러를 잘 봐야 한다.

root@blue:/docker/site# docker node rm qzhykwdwbt06fqmmtgj5h2qsn
Error response from daemon: rpc error: code = FailedPrecondition desc = node qzhykwdwbt06fqmmtgj5h2qsn is a cluster manager and is a member of the raft cluster. It must be demoted to worker before removal
root@blue:/docker/site# docker node demote qzhykwdwbt06fqmmtgj5h2qsn
Manager qzhykwdwbt06fqmmtgj5h2qsn demoted in the swarm.

It must be demoted to worker before removal
꼭 워커노드로 강등을 먼저 하세요! 제발!

이라고 되어 있다. 그래서 매니저-> 워커로 강등을 한다음 manager에서 삭제를 진행해야 한다.
물론! 매니저 노드는 최소 3개를 유지 해 줘야 한다.

docker swarm demote 해당노드 => worker로 강등됨

해당 노드 => docker swarm leave

docker node rm 해당노드