我刚刚安装了docker并安装了节点。 我能够运行一个基本的快递站点。我现在的问题是我无法阻止它。 Control-C没有做任何事情。
我暂时退出的是:
docker stop [container]
这是正确的方法吗?
答案 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)
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
<containerName/containerId>
<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
如果节点容器以分离模式docker run -d node
启动,
你可以用 docker stop <CONTAINER_ID or CONTAINER_NAME>
阻止它。
例如,假设您要杀死一个最新的节点容器:
docker stop $(docker ps | grep node | awk 'NR == 1 { print $1}')