在正在运行的Docker容器中杀死进程

时间:2013-12-16 15:00:05

标签: docker

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

有没有办法在不停止Docker容器的情况下终止该进程?

5 个答案:

答案 0 :(得分:2)

暂时无法使用Docker,但似乎计划安排为0.8,请参阅问题#1228 here

然而,可以使用lxc-attach在现有容器中运行shell(在上面的问题注释中看到),然后您可以从那里终止挂起的进程:

 $ lxc-attach -n FULLCONTAINERID /bin/bash

答案 1 :(得分:1)

您可以使用docker ps --no-trunc = true:

获取FULLCONTAINERID
  

root @ 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 1.3中执行此操作
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 593690fe0087CONTAINER ID杀了docker ps。我有一个容器在那里待了两个星期,现在只在环境没有了的时候看到它。