2013-12-16 82 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個星期,只有當環境不好時纔看到它。

相關問題