2013-12-16 73 views
4

我有一个运行在Docker容器中的服务器端应用程序。其中的一个进程已经挂起并且需要被杀死(应用程序会产生另一个进程来替换它)。在正在运行的Docker容器中终止进程

有什么办法可以在不停止Docker容器的情况下终止进程?

回答

2

现在Docker是不可能的,但似乎预定为0.8,请参阅问题#1228 here

然而可以使用LXC-连接到运行在现有的容器(在上面的问题的意见看到)一个shell,你然后可以从那里杀死你挂起的进程:

$ lxc-attach -n FULLCONTAINERID /bin/bash 
+1

谢谢ometra。这个问题似乎是关于在现有的正在运行的容器上运行另一个命令 - 非常有用,也是更普遍的情况。 我实际上最终通过在Docker主机上查找挂起的进程并直接从那里杀死它来解决这个问题,而没有将lxc连接到容器。你的答案也可以。谢谢。 –

1

你可以得到与搬运工PS --no-TRUNC的FULLCONTAINERID =真:

根@ turmes /家/ zoobab [35]#搬运工PS --no-TRUNC =真 容器ID IMAGE>指令C STATUS PORTS NAMES 2741d88a51148e66d7b2b44d8c1cc6ed7d 1515f370be5d00bd003d40cf8d575b zoobab/centos57:latest kamailio -P /var/run/kamailio.pid -m 64 -M 4 -u kamailio -g kamailio -D 1最多19分钟angry_fermat
root @ turmes/home/zoobab [36]#

1

你现在可以在多克1.3使用exec command做到这一点:

docker exec container_name kill process_name 
+0

我使用了与你所说的相同的命令。但我不能杀死这个过程。当我输入“docker top container_name”时,我仍然可以看到这个过程。我现在能做什么? – priya

1

如果运行多克1.3或更新版本是不是一种选择,你仍然可以获取访问泊坞容器使用nsenter内一个root shell 。

This博客文章有你需要的所有说明。

一旦你有root权限的访问,你当然可以执行任何你喜欢的操作。

0

也许时代已经改变,但作为docker.latest: docker kill 593690fe0087当我运行docker ps时,CONTAINER ID死亡。我在那里有一个集装箱2个星期,只有当环境不好时才看到它。

相关问题