Python 스크립트를 통해 여러 도커 컨테이너를 실행하고 있습니다. Python 스크립트를 정상적으로 닫을 때(cltr+c) 모든 도커 종료를 처리했지만 강제 종료 시 도커는 계속 실행 중입니다.
문제는 Python 스크립트가 비정상적으로 종료된 경우 Docker 컨테이너를 종료할 수 있는 방법이 있습니까? (파이썬 스크립트를 도커 프로세스의 상위 프로세스로 설정하는 걸까요? 그런 게 있나요?)
답변1
같은 문제에 직면한 사람이라면 누구나 도움이 될 수 있습니다.
libc = ctypes.CDLL("libc.so.6")
def set_pdeathsig(sig=signal.SIGTERM):
def callback():
return libc.prctl(1, sig)
return callback
open_container_cmd = "docker-compose run --rm test" # cannot use detach <-d>
proc = subprocess.Popen(
open_container_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
preexec_fn=set_pdeathsig(signal.SIGTERM))