1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 9-4. 서비스 관리 커맨드>를 읽고 정리한 내용으로,

Docker Swarm 내에서 서비스를 관리하는 커맨드에 대한 설명입니다.


2. 서비스 갱신

  • 이미 작성한 서비스를 수정하기 위해서는 docker service update 명령어를 사용함.
  • docker service 명령어에서는 디폴트로 --detach=false 옵션이 적용되어, attach 상태로 명령어가 실행됨에 주의.
  • 웹 서비스를 외부에 8010번 포트로 공개하도록 수정하는 예시
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    rm33amphzhmg        web                 replicated          5/5                 nginx:latest     
    
    $ docker service update --publish-add 8010:80 --detach=true web
    web
    
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    rm33amphzhmg        web                 replicated          5/5                 nginx:latest        *:8010->80/tcp
    • docker service update로 포트포워딩 설정을 추가하는 예제로, 포트포워딩 설정시에는 --public-add라는 옵션을 사용함.
    • 포트포워딩 이외에도 다양한 설정을 추가할 수 있음. (참고: https://docs.docker.com/engine/reference/commandline/service_update/)

 

3. 서비스 롤백

  • 서비스에는 변경된 서비스를 변경 전 상태로 되돌리는 롤백 기능이 있으며, docker service rollback 명령어로 실행.
  • 서비스에 설정을 추가할 때 잘못된 부분이 있을 때 사용할 수 있음.
  • 두번 롤백을 하면 명령어 두개 이전의 상태로 되돌아가는 것이 아니라, 롤백된 명령이 다시 수행됨. (아래 예시의 경우 다시 롤백을 하면 포트포워딩이 적용됨.)
  • 위에서 추가한 포트포워딩 설정을 롤백하는 예제
    $ docker service rollback --detach=true web
    web
    
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    rm33amphzhmg        web                 replicated          5/5                 nginx:latest   

 

4. 서비스 및 태스크의 정보 확인

  • docker service inspect 명령어로 특정 서비스에 대한 자세한 정보를 확인할 수 있으며, 아무런 옵션이 없으면 JSON 형태로 출력됨.
  • --pretty 옵션을 사용하면 JSON 형식보다 보기 쉬운 형태로 정보가 출력됨. 
  • 서비스에서 생성된 태스크 목록을 확인하기 위해서는 docker service ps [서비스명] 명령어로 확인함.