我有一个在Docker容器中运行的服务器端应用程序。其中一个进程已挂起并需要被杀死(应用程序将生成另一个进程来替换它)。
有没有办法在不停止Docker容器的情况下终止该进程?
答案 0 :(得分:2)
暂时无法使用Docker,但似乎计划安排为0.8,请参阅问题#1228 here。
然而,可以使用lxc-attach在现有容器中运行shell(在上面的问题注释中看到),然后您可以从那里终止挂起的进程:
$ lxc-attach -n FULLCONTAINERID /bin/bash
答案 1 :(得分:1)
您可以使用docker ps --no-trunc = true:
获取FULLCONTAINERIDroot @ turmes / home / zoobab [35] #docker ps --no-trunc = true 容器ID图像>命令C状态端口名称 2741d88a51148e66d7b2b44d8c1cc6ed7d1515f370be5d00bd003d40cf8d575b zoobab / centos57:最新的kamailio -P /var/run/kamailio.pid -m 64 -M 4 -u kamailio -g kamailio -D 1向上19分钟angry_fermat
root @ turmes / home / zoobab [36]#
答案 2 :(得分:1)
您现在可以使用exec
command:
docker exec container_name kill process_name
答案 3 :(得分:1)
如果无法运行Docker 1.3或更高版本,您仍然可以使用nsenter获取对Docker容器内root shell的访问权限。
This博客文章包含您需要的所有说明。
一旦您拥有root shell访问权限,您当然可以执行任何您喜欢的操作。
答案 4 :(得分:0)
也许有些时候已经改变但是从docker.latest开始:
我跑docker kill 593690fe0087
时CONTAINER ID
杀了docker ps
。我有一个容器在那里待了两个星期,现在只在环境没有了的时候看到它。