我正在通过 python 脚本运行多个 docker 容器。当优雅地(cltr + c)关闭python脚本时,我已经处理杀死所有dockers,但是当它被强制杀死时,docker仍然运行。
问题是,如果 python 脚本被不正常地杀死,有没有办法杀死 docker 容器? (也许将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))