[Docker] Swarm 명령 사용법-2

docker service update

docker swarm에서 실행 중인 서비스를 업데이트하는 데 사용됩니다. 이 명령어를 통해서 서비스의 구성, 예를 들어 레플리카 수, 사용 이미지, 환경 변수 등을 변경할 수 있습니다.

docker service update [OPTIONS] SERVICE

주요 옵션

  • --replicas: 서비스의 레플리카 수 변경
  • --image: 서비스에 사용할 이미지 업데이트
  • --env-add or --env-rm: 서비스의 환경 변수 추가 또는 제거
  • --force: 변경 사항이 없어도 서비스 업데이트 강제 실행

예시

<service-name>의 레플리카 수를 변경합니다.

docker service update --replicas 5 <service-name>

<service-name>에서 사용되는 이미지를 변경합니다.

docker service update --image <change-image> <service-name>

환경 변수 추가 제거합니다.

docker service update --env-add env1=1 <service-name>
docker service update --env-rm env1 <service-name>

--force 옵션은 서비스 중단이 발생하더라도 즉시 서비스를 업데이트할 때 사용됩니다. 기본적으로 docker swarm은 서비스를 순차적으로 업데이트하여 중단을 최소화하려고 합니다. 그러나 긴급하게 변경 사항을 적용해야 할 때 이 옵션이 유용합니다.

docker service update --force <service-name>

docker service scale

docker swarm에서 서비스의 레플리카 수를 조정하는 데 사용됩니다.

docker service scale <service-name>=<replica-count>

docker service scale과 update --replicas 차이점

scale로도 update로도 레플리카 수를 조정하는데 사용될 수 있습니다. 이 둘의 차이점은 scale을 이용할 경우 여러 개의 서비스의 레플리카 수를 조정하는 데 사용되지만 update는 하나의 서비스밖에 사용되지 못합니다.

docker service rm

docker swarm에서 하나 이상의 서비스를 제거하는 데 사용됩니다. 이 명령어는 지정된 서비스와 관련된 모든 작업을 중지하고 제거합니다.

docker service rm <service-name>

docker stack deploy

docker compose 파일을 사용하여 swarm 클러스터에 스택을 배포하는 데 사용됩니다. stack은 함께 배포되는 서비스들의 그룹입니다.

docker stack deploy -c docker-compose.yml <stack-name>
  • -c or --compose-file: 사용할 docker compose 파일 지정
  • --prune: compose 파일에 정의되지 않은 서비스 또는 컨테이너 제거
  • --resolve-image: 이미지 변경 사항을 발견하면 stack을 다시 배포하는 조건입니다.

docker stack ls

현재 swarm에 배포된 모든 stack을 나열합니다.

docker stack ps

특정 스택의 작업 또는 레플리카를 나열합니다.

docker stack ps [OPTIONS] <stack-name>

docker stack rm

도커 스택과 해당 스택과 관련된 모든 서비스 및 네트워크를 제거합니다.

docker stack rm <stack-name>

docker stack services

스택에 포함된 서비스를 나열합니다.

docker stack services <stack-name>

docker swarm secret

비밀번호, 인증 토큰 등의 민감한 데이터를 안전하게 저장하고 관리하는 기능입니다.

시크릿 생성

echo "password" | docker secret create password -

 

docker compose 파일에서 시크릿 생성

version: "3"
services:
  app:
    image: my-node-app
    secrets:
      - source: db_password
        target: /run/secrets/db_password
        mode: 0400
secrets:
  db_password:
    external: true

 

node.js 애플리케이션에서 시크릿 생성

const fs = require('fs');

const password = fs.readFileSync('/run/secrets/db_password', 'utf8');

console.log('Database password:', password);

개발환경에서는 external를 false로 설정하고 사용할 수 있습니다.

'Docker' 카테고리의 다른 글

[Docker] 포트 관리하기  (0) 2024.06.19
[Docker] network 사용방법  (0) 2024.06.19
[Docker] Swarm 명령 사용법-1  (0) 2024.06.18
[Docker] ARG vs ENV 차이점  (0) 2024.06.17
[Docker] RUN vs CMD vs ENTRYPOINT 차이점  (0) 2024.06.17