首页 > 解决方案 > 如何在nodejs中杀死由`spawn`创建的docker容器?

问题描述

child_process.spawn用来启动一个 docker 容器,如下所示:

const docker = spawn('docker', ['run', '-it', '--rm', 'DOCKER_IMAGE', 'bash'])

我想知道如何停止这个过程。我尝试了以下方法,但它不会停止容器:

docker.kill()

它可以与其他常规进程命令一起正常工作,但 docker 可能会有所不同。有谁知道如何实现这一目标?

我知道停止 docker 容器的正确方法是运行docker stop命令。但是我如何从上面的代码中知道容器 ID?

标签: node.jsdocker

解决方案


<ChildProcess>.kill()不会结束进程,它只是默认发送一个信号“SIGTERM”。所以docker.kill()向 docker 客户端进程发送一个“SIGTERM”,然后运行到这个问题通过发送 SIGTERM 来停止正在运行的 Docker 容器短篇故事 bash 不是初始化,并且将忽略该信号。

您需要运行“docker stop”命令。

或者,您可以跳过对 docker 客户端的脱壳并直接使用 docker api https://github.com/apocas/dockerode


推荐阅读