首页 > 解决方案 > 当父进程死亡时,如何杀死使用 python subprocess.Popen() 创建的 docker?

问题描述

我有一个 python 脚本作为“服务管理器”来运行多个 docker 容器。我已经处理了正常关机(cltr+c)。但是,当我pkill -9使用 python 脚本时,码头工人仍在运行。

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 -d test"
proc = subprocess.Popen(
                open_container_cmd,
                shell=True,
                stdout=open(os.devnull, 'wb'),
                preexec_fn=set_pdeathsig(signal.SIGTERM))

我遵循了这个答案,但没有运气。我什至尝试在终端中执行以终止kill -9 pid具有进程 ID 的 docker 容器,proc = subprocess.Popen(open_container_cmd); proc.pid但它甚至不会停止容器。

标签: pythonlinuxdockersubprocess

解决方案


推荐阅读