[docker] Docker Swarm 스택에서 하나의 서비스 다시 시작

docker swarm이 전체 스택을 다시 시작하지 않고 스택의 일부인 하나의 서비스를 다시 시작하도록하는 방법이 있는지 아는 사람이 있습니까?



답변

이렇게 docker stack deploy나를 다시하는 업데이트 서비스로 이동하는 방법입니다. 로 프랑소와 ‘대답 , 또한 내 자신의 경험에서, 일을 너무 필요가 업데이트 할 것을에만 서비스를 업데이트합니다.

그러나 때로는 테스트 할 때 단일 서비스 만 다시 시작하는 것이 더 쉬워 보입니다. 제 경우에는 볼륨을 지우고 서비스를 업데이트하여 새 것처럼 시작해야했습니다. 설명 할 방법에 단점이 있는지 확실하지 않습니다. 나는 그것을 내 개발 스택에서 테스트했고 그것은 나를 위해 잘 작동했습니다.

해체하려는 서비스 ID를 가져온 다음이를 사용 docker service update --force <id>하여 효과적으로 다시 배포하는 서비스 업데이트를 강제 실행합니다.

$ docker stack services <stack_name>
ID                  NAME              ...
3xrdy2c7pfm3        stack-name_api    ...

$ docker service update --force 3xrdy2c7pfm3

--force플래그는 서비스를 강제로 업데이트하여 다시 시작합니다.


답변

0으로 확장 및 백업 :

docker service scale myservice=0
docker service scale myservice=10


답변

docker stack문서를 보면 :

자세한 설명

떼의 compose 또는 dab 파일에서 스택 생성 및 업데이트

에서 이 블로그 기사 : docker stack와 유사한 방식으로 작동합니다 docker compose. 그것은이다 나무 등 . 스택이 이미 배포 된 경우 docker stack deploy업데이트 된 다이제스트 또는 태그가있는 서비스 만 다시 시작합니다.

도커 스택 프로세스

경험상 하나의 서비스가 변경된 상태에서 동일한 스택을 다시 배포 하면 업데이트 된 서비스 만 다시 시작 됩니다.

하지만 … 고려되는 변경 사항에 몇 가지 제한이있는 것 같습니다 (일부 이미지 태그가있는 버그 보고 ). 시도해보고 예상대로 작동하는지 확인하십시오.

service update변경 사항으로 업데이트 된 경우에만 대상 서비스를 확인하려는 경우 에도 사용할 수 있습니다 .

이 유사한 SO QA를 참조 할 수도 있습니다 .


답변

롤링 업데이트 문서 의 예에 따라 :

$ docker 서비스 업데이트 –image redis : 3.0.7 redis

그러나 이미지가 이미 로컬 컴퓨터에있는 경우에만 작동합니다. 그렇지 않은 경우 –with-registry-auth를 사용하여 레지스트리 인증 세부 정보를 swarm 에이전트에 보내야합니다. Docker 서비스 업데이트 문서 에서 세부 사항을 참조하십시오 .

$ docker 서비스 업데이트 –with-registry-auth –image redis : 3.0.7 redis


답변

그것을 제거하십시오 :

docker stack rm stack_name

재배포 :

docker stack deploy -c docker-compose.yml stack_name


답변