当父进程死亡时,如何杀死使用python subprocess.Popen()创建的docker?

2024-04-19 17:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本作为“服务管理器”来运行多个docker容器。我已经处理了正常关机(cltr+c)。但是,当我运行python脚本时,dockers仍然在运行

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))

我跟着this answer但没有运气。我甚至尝试在终端kill -9 pid中执行,以从proc = subprocess.Popen(open_container_cmd); proc.pid杀死进程ID为的docker容器,但它甚至不会停止容器


Tags: docker脚本cmdsignalcontainerdefcallbackproc