docker swarm init 명령어를 사용하여 Swarm 초기화하는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker swarm init 명령을 사용하여 Docker Swarm 을 초기화하는 방법을 배우게 됩니다. 기본적인 프로세스를 이해하기 위해 먼저 기본적인 Swarm 을 초기화하는 것으로 시작합니다.

기본 초기화를 기반으로, 더 발전된 시나리오를 탐구할 것입니다. 여기에는 네트워크 통신을 제어하기 위한 특정 광고 주소 (advertise address) 로 Swarm 을 초기화하고, 보안을 강화하기 위해 자동 잠금 (autolock) 을 활성화하며, 사용자 정의 데이터 경로 포트를 구성하는 것이 포함됩니다. 이러한 단계를 통해 Docker Swarm 환경을 설정하고 사용자 정의하는 실질적인 경험을 얻게 될 것입니다.

기본 Swarm 초기화

이 단계에서는 기본적인 Docker Swarm 을 초기화하는 방법을 배우게 됩니다. Docker Swarm 은 Docker 를 위한 네이티브 클러스터링 및 오케스트레이션 (orchestration) 솔루션입니다. 이를 통해 Docker 노드 클러스터를 생성하고 관리할 수 있습니다.

Swarm 을 초기화하기 전에, 현재 Docker 상태를 확인해 보겠습니다.

docker info

Docker 설치에 대한 정보가 표시되어야 합니다. "Swarm" 섹션을 찾아보세요. Swarm 이 비활성 상태임을 나타낼 것입니다.

기본 Swarm 을 초기화하려면 docker swarm init 명령을 사용합니다. 이 명령은 현재 Docker 호스트를 Swarm 매니저 (manager) 로 전환합니다.

docker swarm init

명령을 실행한 후, Swarm 이 초기화되었음을 나타내는 출력과 다른 노드를 작업자 (worker) 로 Swarm 에 가입시키는 명령을 제공하는 것을 볼 수 있습니다.

Swarm 이 성공적으로 초기화되었는지 확인해 보겠습니다.

docker info

이제 "Swarm" 섹션은 Swarm 이 활성 상태이며 현재 노드가 매니저임을 나타내야 합니다.

docker node ls 명령을 사용하여 Swarm 의 노드를 나열할 수도 있습니다.

docker node ls

현재 노드가 "Ready" 상태와 "Manager" 역할을 가지고 나열되어야 합니다.

특정 광고 주소로 Swarm 초기화

이전 단계에서는 기본적인 Docker Swarm 을 초기화했습니다. 이 단계에서는 Swarm 을 초기화하고 Swarm 매니저가 다른 노드에 광고할 주소를 지정하는 방법을 배우게 됩니다. 이는 여러 네트워크 인터페이스가 있는 환경이나 Swarm 통신에 사용할 주소를 제어하려는 경우에 유용합니다.

먼저, 기존 Swarm 을 떠나야 합니다. docker swarm leave 명령을 사용하여 이 작업을 수행할 수 있습니다. 이것이 유일한 노드이고 매니저이므로 --force 플래그를 사용해야 합니다.

docker swarm leave --force

노드가 Swarm 을 떠났음을 확인하는 출력을 볼 수 있습니다.

이제 현재 머신의 IP 주소를 찾아보겠습니다. ip addr show 명령을 사용하여 네트워크 인터페이스 (일반적으로 eth0 또는 ens*) 와 관련된 IP 주소를 찾을 수 있습니다.

ip addr show

Swarm 의 광고 주소로 사용하려는 IP 주소를 식별합니다. 예를 들어, IP 주소가 172.17.0.2인 경우 해당 주소를 사용합니다.

이제 Swarm 을 다시 초기화하지만, 이번에는 --advertise-addr 플래그를 사용하여 광고 주소를 지정합니다. <YOUR_IP_ADDRESS>를 실제로 찾은 IP 주소로 바꿉니다.

docker swarm init --advertise-addr <YOUR_IP_ADDRESS>

기본 초기화와 유사한 출력을 볼 수 있지만, join 명령에는 이제 지정된 광고 주소가 포함됩니다.

Swarm 이 올바른 광고 주소로 초기화되었는지 확인하려면 Swarm 을 검사할 수 있습니다.

docker swarm inspect --pretty

출력에서 AdvertiseAddr 필드를 찾아보세요. 지정한 IP 주소와 일치해야 합니다.

Autolock 활성화된 Swarm 초기화

이 단계에서는 자동 잠금 기능이 활성화된 Docker Swarm 을 초기화하는 방법을 배우게 됩니다. 자동 잠금은 Docker 데몬 (daemon) 재시작 후 Swarm 을 잠금 해제하기 위해 복호화 키를 요구함으로써 무단 액세스로부터 Swarm 을 보호하는 데 도움이 됩니다.

먼저, 이전 단계에서 했던 것처럼 기존 Swarm 을 떠납니다.

docker swarm leave --force

이제 --autolock 플래그를 사용하여 Swarm 을 초기화합니다. 광고 주소를 지정하려면 --advertise-addr 플래그를 다시 포함할 수도 있습니다. <YOUR_IP_ADDRESS>를 머신의 IP 주소로 바꿉니다.

docker swarm init --autolock --advertise-addr <YOUR_IP_ADDRESS>

--autolock으로 Swarm 을 초기화하면 출력에 "Swarm auto-lock key"가 포함됩니다. 이 키는 안전한 위치에 저장하는 것이 중요합니다. Docker 데몬 재시작 후 Swarm 을 잠금 해제하려면 이 키가 필요합니다.

자동 잠금이 활성화되었는지 확인하려면 Swarm 을 검사할 수 있습니다.

docker swarm inspect --pretty

출력에서 AutoLockManagers 필드를 찾아보세요. true로 설정되어 있어야 합니다.

이는 랩 환경의 단일 노드 Swarm 이므로, 데몬 재시작 후 키가 필요한 자동 잠금의 전체 효과를 경험하지는 못할 것입니다. 그러나 이 단계는 해당 기능을 활성화하는 방법을 보여줍니다.

사용자 지정 데이터 경로 포트 (5789) 로 Swarm 초기화

이 단계에서는 Docker Swarm 을 초기화하고 데이터 경로 네트워크에 대한 사용자 정의 포트를 지정하는 방법을 배우게 됩니다. 데이터 경로 네트워크는 서비스 검색 및 로드 밸런싱과 같은 작업에 대해 Swarm 노드 간의 통신에 사용됩니다. 기본적으로 이 네트워크는 포트 4789 를 사용합니다. 네트워크의 다른 서비스와 충돌하는 경우 이 포트를 변경해야 할 수 있습니다.

먼저, 기존 Swarm 을 떠납니다.

docker swarm leave --force

이제 Swarm 을 초기화하고 --data-path-port 플래그를 사용하여 사용자 정의 데이터 경로 포트를 지정합니다. 예시로 포트 5789를 사용해 보겠습니다. 원하는 경우 --advertise-addr 플래그와 --autolock 플래그를 포함할 수도 있습니다. <YOUR_IP_ADDRESS>를 머신의 IP 주소로 바꿉니다.

docker swarm init --data-path-port 5789 --advertise-addr < YOUR_IP_ADDRESS > --autolock

자동 잠금을 활성화한 경우 자동 잠금 키를 포함한 초기화 출력을 볼 수 있습니다.

사용자 정의 데이터 경로 포트가 구성되었는지 확인하려면 Swarm 을 검사할 수 있습니다.

docker swarm inspect --pretty

출력에서 DataPathPort 필드를 찾아보세요. 이 예시에서는 지정한 사용자 정의 포트인 5789가 표시되어야 합니다.

이것으로 다양한 옵션으로 Docker Swarm 을 초기화하는 단계가 마무리되었습니다. 기본적인 Swarm 을 초기화하고, 광고 주소를 지정하고, 자동 잠금을 활성화하고, 사용자 정의 데이터 경로 포트를 설정하는 방법을 배웠습니다.

요약

이 랩에서는 Docker Swarm 을 초기화하는 기본적인 프로세스를 배웠습니다. docker swarm init 명령을 사용하여 기본적인 Swarm 을 초기화하는 것으로 시작하여 docker info의 변경 사항을 관찰하고 docker node ls로 매니저 (manager) 역할을 확인했습니다.

이후, 더 고급 초기화 옵션을 탐색했습니다. docker swarm leave --force를 사용하여 기존 Swarm 을 떠나는 방법과 --advertise-addr 플래그를 사용하여 특정 광고 주소를 지정하면서 Swarm 을 다시 초기화하는 방법을 배웠습니다. 이를 통해 Swarm 통신에 사용되는 네트워크 인터페이스를 제어하는 방법을 보여주었습니다.