스웜에서 서비스 확장하기
스웜에서 서비스 확장하기
스웜에 서비스를 배포했다면, 이제 Docker CLI를 사용해서 서비스의 컨테이너 개수를 자유롭게 조정할 수 있어요. 서비스 안에서 실행되는 각각의 컨테이너를 '태스크(task)'라고 부르는데, 이번 장에서는 이 태스크 수를 늘리는 방법을 단계별로 알아볼게요.
출처: 공식문서
본문
1단계: 매니저 노드에 접속하기
아직 터미널을 열지 않았다면 터미널을 열고, 매니저 노드가 실행 중인 머신에 SSH로 접속하세요. 이 튜토리얼에서는 manager1이라는 이름의 머신을 사용하고 있어요.
2단계: 서비스 확장 명령 실행하기
스웜에서 실행 중인 서비스의 원하는 상태(desired state)를 변경하려면 다음 명령어를 실행하면 돼요:
$ docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>
예를 들어, helloworld 서비스를 5개 태스크로 확장하려면 이렇게 입력하면 됩니다:
$ docker service scale helloworld=5
helloworld scaled to 5
3단계: 업데이트된 태스크 목록 확인하기
docker service ps <SERVICE-ID> 명령어를 실행하면 변경된 태스크 목록을 확인할 수 있어요:
$ docker service ps helloworld
NAME IMAGE NODE DESIRED STATE CURRENT STATE
helloworld.1.8p1vev3fq5zm0mi8g0as41w35 alpine worker2 Running Running 7 minutes
helloworld.2.c7a7tcdq5s0uk3qr88mf8xco6 alpine worker1 Running Running 24 seconds
helloworld.3.6crl09vdcalvtfehfh69ogfb1 alpine worker1 Running Running 24 seconds
helloworld.4.auky6trawmdlcne8ad8phb0f1 alpine manager1 Running Running 24 seconds
helloworld.5.ba19kca06l18zujfwxyc5lkyn alpine worker2 Running Running 24 seconds
출력 결과를 보면, 스웜이 Alpine Linux 인스턴스 총 5개를 실행하기 위해 새 태스크 4개를 생성한 것을 알 수 있어요. 이 태스크들은 스웜의 세 노드(worker1, worker2, manager1)에 분산 배치되었고, 그중 하나는 manager1에서 실행 중이랍니다.
4단계: 현재 노드의 컨테이너 확인하기
docker ps 명령어를 실행하면 지금 접속해 있는 노드에서 실행 중인 컨테이너 목록을 볼 수 있어요. 아래 예시는 manager1에서 실행 중인 태스크를 보여주고 있어요:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
528d68040f95 alpine:latest "ping docker.com" About a minute ago Up About a minute helloworld.4.auky6trawmdlcne8ad8phb0f1
다른 노드에서 실행 중인 컨테이너를 확인하고 싶다면, 해당 노드에 SSH로 접속한 다음 docker ps 명령어를 실행하면 됩니다.
다음 단계
이제 튜토리얼의 helloworld 서비스 작업은 끝났어요. 다음으로는 이 서비스를 삭제하는 방법을 알아볼게요.