docker swarm init
docker swarm init
docker swarm init은 스웜(Swarm)을 초기화하는 명령이에요. 이 명령으로 스웜을 처음 만들고, 실행한 노드가 매니저가 돼요.
출처: 문서
본문
docker swarm init은 스웜을 초기화하는 명령이에요. 이 명령이 가리키는 Docker Engine이 새로 만들어진 싱글 노드 스웜의 매니저가 돼요.
docker swarm init [OPTIONS]
지원하는 옵션은 다음과 같아요.
| 옵션 | 기본값 | 설명 |
|---|---|---|
--advertise-addr |
광고 주소예요 (형식: [:port]). |
|
--autolock |
매니저 오토락을 켜요 (멈춘 매니저를 시작하려면 언락 키가 필요해요). | |
--availability |
active |
노드 가용성이에요 (active, pause, drain). |
--cert-expiry |
2160h0m0s |
노드 인증서 유효기간이에요 (ns/us/ms/s/m/h). |
--data-path-addr |
API 1.31+ 데이터 경로 트래픽에 쓸 주소 또는 인터페이스예요. | |
--data-path-port |
API 1.40+ 데이터 경로 트래픽에 쓸 포트 번호예요 (1024~49151). 값이 없거나 0이면 기본 포트(4789)를 써요. | |
--default-addr-pool |
API 1.39+ 기본 주소 풀(CIDR 형식)이에요. | |
--default-addr-pool-mask-length |
24 |
API 1.39+ 기본 주소 풀 서브넷 마스크 길이예요. |
--dispatcher-heartbeat |
5s |
디스패처 하트비트 주기예요 (ns/us/ms/s/m/h). |
--external-ca |
하나 이상의 인증서 서명 엔드포인트 설정이에요. | |
--force-new-cluster |
현재 상태에서 새 클러스터를 강제로 만들어요. | |
--listen-addr |
0.0.0.0:2377 |
수신 주소예요 (형식: [:port]). |
--max-snapshots |
API 1.25+ 유지할 추가 Raft 스냅샷 수예요. | |
--snapshot-interval |
10000 |
API 1.25+ Raft 스냅샷 사이 로그 항목 수예요. |
--task-history-limit |
5 |
태스크 기록 보존 상한이에요. |
예시
$ docker swarm init --advertise-addr 192.168.99.121
Swarm initialized: current node (bvz81updecsj6wjz393c09vti) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-aabbccdd00112233aabbccdd00112233aabbccdd00112233aa-aabbccdd00112233... 172.17.0.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker swarm init은 워커 토큰과 매니저 토큰 두 개의 랜덤 토큰을 생성해요. docker swarm join에 어떤 토큰을 넘기느냐에 따라 새 노드가 워커나 매니저로 조인해요. 스웜 생성 후 토큰은 docker swarm join-token으로 조회하거나 회전할 수 있어요.
매니저 키·데이터 보호 (--autolock)
--autolock 플래그는 암호화 키로 매니저를 자동 잠그는 기능을 켜요. 모든 매니저가 저장하는 개인 키와 데이터는 출력에 표시된 암호화 키로 보호되고, 이 키 없이는 접근할 수 없어요. 재시작 후 매니저를 다시 활성화하려면 이 키를 안전하게 보관해야 해요. docker swarm unlock 명령에 키를 넘겨 매니저를 다시 활성화할 수 있어요. docker swarm update --autolock=false로 오토락을 끌 수 있는데, 끄면 암호화 키 없이도 매니저가 자동으로 시작돼요.
외부 인증 기관 사용 (--external-ca)
이 플래그는 외부 CA가 노드 인증서를 발급하도록 스웜을 설정해요. 값은 protocol=X,url=Y 형식이에요. 현재 지원되는 protocol 값은 cfssl뿐이에요.
싱글 모드 매니저로 강제 재시작 (--force-new-cluster)
쿼럼이 유실된 기존 노드를 데이터 손실 없이 싱글 노드 매니저로 재시작하도록 강제해요.
인바운드 제어 플레인 인터페이스 지정 (--listen-addr)
노드는 이 주소에서 인바운드 스웜 매니저 트래픽을 수신해요. 기본은 0.0.0.0:2377이고, 인터페이스 이름도 지정할 수 있어요(예: --listen-addr eth0:2377). 포트 지정은 선택이라, IP나 인터페이스만 주면 기본 포트 2377을 써요.
아웃바운드 제어 플레인 인터페이스 지정 (--advertise-addr)
--advertise-addr은 API 접근과 오버레이 네트워킹을 위해 다른 스웜 멤버에게 광고할 주소예요. 지정하지 않으면 시스템에 IP가 하나만 있을 때 그 IP와 수신 포트를 써요. IP가 여러 개라면 매니저 간 통신과 오버레이 네트워킹을 위해 반드시 지정해야 해요.
데이터 트래픽 인터페이스 지정 (--data-path-addr)
--data-path-addr은 글로벌 스코프 네트워크 드라이버가 이 노드의 컨테이너에 도달하기 위해 다른 노드에 공개할 주소예요. 이 매개변수로 컨테이너 데이터 트래픽을 클러스터 관리 트래픽과 분리할 수 있어요. 지정하지 않으면 광고 주소의 IP/인터페이스를 사용해요.
데이터 트래픽 포트 설정 (--data-path-port)
--data-path-port는 데이터 경로 트래픽에 쓸 UDP 포트를 설정해요. 1024~49151 범위여야 해요. 설정하지 않거나 0이면 기본 4789를 써요. 데이터 경로 포트는 스웜 초기화 때만 설정할 수 있고, 스웜에 조인하는 모든 노드에 적용돼요.
$ docker swarm init --data-path-port=7777
기본 서브넷 풀 지정 (--default-addr-pool)
--default-addr-pool은 글로벌 스코프 네트워크용 기본 서브넷 풀을 지정해요. 여러 번 지정할 수 있어요.
$ docker swarm init \
--default-addr-pool 30.30.0.0/16 \
--default-addr-pool 40.40.0.0/16
--default-addr-pool-mask-length 플래그로 서브넷 풀의 기본 마스크 길이를 정해요.
매니저 가용성 설정 (--availability)
--availability는 노드가 조인할 때의 가용성을 지정해요. 가능한 값은 active, pause, drain이에요. 워커 노드 역할을 하지 않는 전용 매니저 노드를 만들려면 docker swarm init에 --availability=drain을 넘기면 돼요.