我正在使用 child_process.spawn
启动 Docker 容器,如下所示:
const docker = spawn('docker', ['run', '-it', '--rm', 'DOCKER_IMAGE', 'bash'])
我想知道如何停止该过程。我尝试了以下方法,但它不会停止容器:
docker.kill()
它可以与其他常规进程命令配合使用,但 docker 可能会有所不同。有人知道如何实现这一目标吗?
我知道停止 docker 容器的正确方法是运行 docker stop 命令。但是我如何从上面的代码中知道容器ID呢?
最佳答案
<ChildProcess>.kill()
不会结束进程,它只是默认发送一个信号“SIGTERM”。所以docker.kill()
向 docker 客户端进程发送“SIGTERM”,然后遇到此问题 Stop a running Docker container by sending SIGTERM简而言之 bash 不是 init,并且会忽略该信号。
您需要运行“docker stop”命令。
或者,您可以跳过对 docker 客户端的 shell 操作,直接使用 docker api https://github.com/apocas/dockerode
关于node.js - 如何杀死nodejs中 `spawn`创建的docker容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033838/