node.js - 如何在nodejs中杀死由`spawn`创建的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”,然后运行到这个问题通过发送 SIGTERM 来停止正在运行的 Docker 容器短篇故事 bash 不是初始化,并且将忽略该信号。
您需要运行“docker stop”命令。
或者,您可以跳过对 docker 客户端的脱壳并直接使用 docker api https://github.com/apocas/dockerode
推荐阅读
- java - Returning an Object after setting another property in a single line
- c++ - 调用函数时是否解锁了 unique_lock?
- c - 30定义的socket地址族是什么?
- react-native - 从一个数据集中渲染 flatlist/sectionlist 中的部分
- python - 无法使用 opencv 正确加载包含图像的文件夹
- python - ValueError: Input 0 is incompatible with layer repeat_vector_58: expected ndim=2, found ndim=3
- python - Unable to dynamically reset the maximum height of widgets in a QSplitter
- javascript - Redux-Form:将 shouldValidate 设置为 `() => true`
- html - 如何使搜索按钮响应?
- java - Spring reactive - 收到新消息时的事件