node.js - 如何杀死nodejs中 `spawn`创建的docker容器?

标签 node.js docker

我正在使用 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/

相关文章:

postgresql - 第一次尝试使用Docker : Error response from daemon: driver failed programming external connectivity on endpoint webserver (2d9

node.js - 在 REST API GET 请求中定义 MongoDB 集合

javascript - 无法初始化 JavaScript 类以命名关键字

docker - 适用于Docker的Windows基于Couchbase镜像

docker - 如何打包 Vagrant/虚拟盒子虚拟机以加载到另一个系统

docker - 无法访问 Docker Swarm 中服务的 HTTP 端点

tomcat - docker mesosphere marathon - 无法看到 docker 容器内正在运行的进程

node.js - SailsJs 中填充了什么?

node.js - 如何让这个 Typescript Webpack 项目编译而不出错?

javascript - 在 ember 组件中使用 ember-cli-sheetjs