如何停止在docker中运行节点

时间:2016-04-15 03:47:32

标签: node.js docker

我刚刚安装了docker并安装了节点。 我能够运行一个基本的快递站点。我现在的问题是我无法阻止它。 Control-C没有做任何事情。

我暂时退出的是:

  1. 关闭泊坞窗的终端。
  2. 开一个新的。
  3. 搜索正在运行的所有docker容器。
  4. 然后docker stop [container]
  5. 这是正确的方法吗?

9 个答案:

答案 0 :(得分:4)

如此处所述:github: docker-node best practice

您可以将--init标志添加到docker run命令中。

docker run -it --init -p 3000:3000 --name nodetest mynodeimage

答案 1 :(得分:3)

如果您只想在不停止容器的情况下停止节点,则可以进入容器并运行:

$ ps aux | grep node #to obtain process ID (value in second column)
$ kill <process ID>

答案 2 :(得分:3)

我今天遇到了同样的问题,并努力寻找解释/解决方案。我(通过反复试验)发现,只有在Dockerfile中的CMD设置为:

CMD [ "node", "server.js" ]

但是,将CMD更改为:Ctrl + C可以正常工作

CMD [ "npm", "start" ]

我的npm start文件中的package.json脚本被设置为node server.js,所以我不知道为什么这种更改有效,但希望能有所帮助。

答案 3 :(得分:2)

docker run本应该给你回复提示,避免使用CTRL + C或关闭docker终端。

一旦您重新登录该终端,docker ps -a + docker stop就足以让您的容器退出(您仍需要在尝试再次启动它之前将其删除)

答案 4 :(得分:1)

作为解决方案的一部分,您可以打开package.js并添加3个新命令/脚本:

"scripts": {    

"docker-build-and-run": "docker build -t image-dev-local . && docker run -p 3001:3001 --name container-dev-local image-dev-local",
"docker-stop-and-clear": "(docker stop container-dev-local || true) && (docker rm container-dev-local || true)",
"docker-run": "npm run docker-stop-and-clear && npm run docker-build-and-run"

}

只需在终端中运行:

npm run docker-run

在Docker的3001端口上启动您的应用程序,并玩得开心。每次下一次运行都会清除上一个并再次构建/运行。

要停止并删除它,只需运行:

npm run docker-stop-and-clear

答案 5 :(得分:1)

我不知道这是否为时已晚。但是,执行此操作的正确方法是捕获SIGINT(JavaScript中的中断信号)。

var process = require('process')
process.on('SIGINT', () => {
  console.info("Interrupted")
  process.exit(0)
})

按Ctrl + C时应该可以解决问题

答案 6 :(得分:0)

  1. docker stop 6 value is : 4/11/2016 value is : 4/11/2016 value is : 4/11/2016 value is : 4/11/2016 value is : 4/11/2016 value is : 4/11/2016
  2. docker kill --signal = SIGINT <containerName/containerId>
  3. docker rm -f <containerName/containerId>

答案 7 :(得分:0)

据我所知,您需要 -t -i 才能使Ctrl-C正常工作。我相信这样的命令会有所帮助。

我可以在下面想到的简单示例 案例1保留容器:

$ ID=$(sudo docker run -t -d ubuntu /usr/bin/top -b)
$ sudo docker attach $ID
Control-C
$ sudo docker ps

情况2终止容器:

$ ID=$(sudo docker run -t -i -d ubuntu /usr/bin/top -b)
$ sudo docker attach $ID
Control-C
$ sudo docker ps

答案 8 :(得分:0)

在节点控制台内,运行docker run -it node后, 您可以使用以下命令退出:

  • 输入.exit
  • 按两次
    • ctrl+c
    • ctrl+d

如果节点容器以分离模式docker run -d node启动, 你可以用 docker stop <CONTAINER_ID or CONTAINER_NAME> 阻止它。

例如,假设您要杀死一个最新的节点容器:

docker stop $(docker ps | grep node | awk 'NR == 1 { print $1}')
相关问题