Docker: 컨테이너가 중지될 때 호스트에서 스크립트를 시작하는 방법은 무엇입니까?

Docker: 컨테이너가 중지될 때 호스트에서 스크립트를 시작하는 방법은 무엇입니까?

Docker 컨테이너가 중지되었을 때 호스트에서 bash 스크립트를 시작할 수 있는지 알고 싶습니다.

예를 들어 컨테이너가 중지되면 서비스도 중지하고 싶습니다.

SIGTERM 신호를 포착하는 것이 가능하며 그런 다음 컨테이너에서 일부 bash 명령을 실행할 수 있다는 것을 확인했습니다. 호스트 시스템에서 SIGTERM 신호를 포착한 다음 스크립트를 시작하는 방법이 있을 수 있습니다.

답변1

노력하다도커 이벤트적절한 필터를 사용합니다. 즉

$ docker events --filter 'container=alpine-bash' --filter 'event=stop'
> 2019-07-26T17:25:35.944807432+04:00 container stop 5db8ba01c4ca26b4417bd080d9022b74893a865eefe22dc987f8d18fda104f39 (image=yikaus/alpine-bash, name=alpine-bash)

답변2

다음 명령 을 사용할 수 있습니다 docker container wait.

$ docker container wait --help

Usage:  docker container wait CONTAINER [CONTAINER...]

Block until one or more containers stop, then print their exit codes

사용 예는 다음과 같습니다.

$ docker run -d --rm --name test-wait busybox sleep 10
9ca77ac5121690110e8fdf58e73583918fa9b1a5de56ab89eb70cc89be97f3fa

$ docker container wait test-wait
0

두 번째 명령은 컨테이너의 절전 명령이 완료될 때까지 중단되었습니다.

관련 정보