[Docker] 도커 스웜: 서비스

도커 스웜(swarm)은 여러개의 도커 컨테이너를 관리할 수 있게 해주는 도커 전용 관리도구다.

여러개의 컨테이너를 하나의 서비스로 묶어 레플리카 개념으로 굴릴 수도 있고, 롤링 업데이트로 무중단배포를 할 수도 있고, 실 운영적인 측면에서 필요한 제어기능들을 사용할 수 있다는게 장점이다.

도커 스웜을 활성화하려면 다음과 같이 swarm init 명령을 사용해주면 된다.




서비스 생성

그냥 쌩 도커에서 인스턴스를 관리하는 단위가 컨테이너였다면, 스웜에서의 관리 단위는 서비스다.
서비스 생성은 다음과 같이 service create 명령에 도커 이미지를 지정해주는 것으로 수행할 수 있다.

그럼 다음과 같이 서비스 목록에 뜰 것이다.

그리고 서비스에 포함된 컨테이너들도 따로 조회할 수 있다.
서비스는 컨테이너의 관리를 위한 추가단위이지, 그 자체로 독립적인 인스턴스는 아니기 때문이다.

특정 서비스의 컨테이너만 보고 싶다면 ps 명령을 사용하면 된다.

그리고 컨테이너 실행 옵션의 대부분을 동일하게 사용할 수 있다.
이전에 하던대로 포트, 환경변수 등을 넘겨줬다.

옵션을 줄줄이 달더라도, 도커 이미지는 맨 오른쪽에 와야 함을 명심하길 바란다.
안그러면 에러도 안뿜고 무한대기를 하는 등의 이상동작을 보인다.




로그 확인

실제 컨테이너 실행에 대한 로그를 보고 싶다면 service logs 명령으로 확인할 수 있다.




서비스 삭제

서비스를 날려버리고 싶다면 rm 명령에 서비스 식별자를 넣어주면 된다.




레플리카를 통한 스케일아웃

이런 관리도구를 사용할 때 좋은 점이 인스턴스를 자유롭게 늘렸다 줄였다 할 수 있다는 것이다.

scale 명령을 사용하면 컨테이너의 개수를 마음대로 조절할 수 있다.
다음은 foo 서비스에 컨테이너를 3개 할당한다는 뜻이다.

그럼 실제로 컨테이너가 3개로 늘어날 것이다.

레플리카 수는 scale 명령을 쓰지 않아서 서비스 생성시에 replicas 옵션으로 줘버릴 수도 있다.




서비스 업데이트

기존 서비스에서 뭔가 구성값들을 바꾸고 싶다면 service update 명령을 사용하면 된다.
다음은 CPU 개수 제한을 2개로 변경하는 명령이다.

옵션값에 대한 것은 문서를 참조하길 바란다.
https://docs.docker.com/engine/reference/commandline/service_update/

혹은 재배포를 위한 용도로도 사용할 수 있다.
--force 옵션을 주면 변경사항이 없더라도 재시작을 해준다.

그렇다.



참조
https://roseline124.github.io/kuberdocker/2019/07/31/docker-study08.html