2015-03-19 169 views
5

我有一個docker映像dajobe/hbase,它是從Ubuntu構建的。我創建了一個這個圖像的容器並命名爲hb。來自守護進程的錯誤響應:容器CONTAINER_NAME未運行

$ docker run -d --name hb dajobe/hbase 
e1f68ff8b3b6c5e474426e2566f8c087d6a785fc5eeb58cd2aeb86176068651d 

然後我在hb上啓動了/ bin/bash,並檢查了vi編輯器的可用性。

$ docker exec -it hb /bin/bash 
[email protected]:/# vi 
bash: vi: command not found 

我再裝用vi編輯器易於得到

# apt-get install vim 
Reading package lists... 
DoneBuilding dependency tree 
Reading state information... Done 
..... 
..... 

我想提交更改,這樣vi編輯器可能持續。

$ docker commit hb dajobe/hbase 
1be196188efc5a52562dc8ee1b63d0fd560ea163c49331c10dc435848d75ef64 

然後,當我再次啓動dajobe/hbase時,它會自動停止。

$ docker run -d --name hb dajobe/hbase 
c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38 

$ docker exec -it hb /bin/bash 
FATA[0000] Error response from daemon: Container hb is not running 

爲什麼容器沒有運行?

$ docker ps -a 
CONTAINER ID  IMAGE    COMMAND   CREATED     STATUS     PORTS  NAMES 
c3e7b9f48077 dajobe/hbase:latest "/opt/hbase-server" 11 secs ago   Exited (0) 8 secs ago      hb 

爲什麼狀態「已退出」?在提交之前,情況並非如此,狀態是「Up」。

+0

檢查與命令'泊塢窗events'的原因,看到該文檔https://docs.docker.com/reference/commandline/cli/#events,例如'泊塢窗事件--filter容器= c3e7b9f48077' – user2915097 2015-03-19 12:44:45

+0

這個命令沒有任何反應.. 我運行命令,然後沒有任何反應,我需要做一個Ctrl + C停止。 – 2015-03-19 13:17:25

+0

只是'碼頭事件'應該讓我們知道 – user2915097 2015-03-19 13:26:23

回答

1

我希望狀態退出。也許你使用的原始圖像有一個入口點,這個入口點做了一些讓你在執行它時保持容器運行的東西。你可以試試這個:

docker run -d --name hb dajobe/hbase sleep 60 

然後嘗試你的exec,在接下來的60秒中你將連接到你的交互式shell。之後,您將再次收到相同的消息。

-d使容器成爲守護進程。但它需要做些什麼,否則它就會退出!你有沒有試過用-it做跑線?

docker run -it --name hb dajobe/hbase bash 

你也會在那裏得到一個shell提示符,你可以在那裏更新圖像。

-g

+0

是的,你說得對,'60睡眠'允許容器活躍60秒。實際上,'睡眠60'正在覆蓋原始命令'/ opt/hbase-server'。但是當我嘗試使用新映像時,爲什麼hbase-server會退出?它與原來的完美配合。原始圖像和新圖像(提交)不會相同嗎?除了承諾的人會安裝vim之外。 – 2015-03-19 13:39:57

+0

我不知道新提交的圖像如何獲取其入口點。文檔:https://docs.docker.com/reference/commandline/cli/#commit建議您應該使用Dockerfile來維護圖像,而不是交互式地進行。那麼你會有明確的控制。我不知道當一個正在運行的圖像被暫停並保存到一個新圖像時應該發生什麼。 – Greg 2015-03-19 14:08:12

相關問題