2015-01-07 19 views
6

我創建了一個僅包含靜態HTML文件的數據容器,這些靜態HTML文件將被nginx容器使用。目標是我的webapp提供一個nginx可以使用的音量。docker從零開始運行數據容器

爲此,我創建了一個簡單Dockerfile:

FROM scratch 
MAINTAINER me <[email protected]> 
ADD dist/ /webappp/ 

當我運行命令行創建容器run -d -v /webappp --name webapp myOrg/webapp echo yo

我得到這要是當然正確的,因爲圖像沒有命令錯誤Error response from daemon: Cannot start container db7fd5cd40d76311f8776b1710b4fe6d66284fe75253a806e281cd8ae5169637: exec: "echo": executable file not found in $PATH完全可以執行。不使用命令運行容器是不可能的。

雖然命令行上的這個錯誤對我來說不是一個大問題,因爲我知道數據容器仍然被創建,現在可以被nginx訪問,但如果我想用Vagrant自動化它,結果是不行。由於這個錯誤,自動化進程總是失敗。

我到目前爲止唯一的解決方案是從發行版中擴展我的小小方便的圖像,恕我直言,對於僅用於數據的容器來說,這只是爲了調用echo或true!

Docker中是否有NOP exec命令,或者docker是否需要始終執行某些操作?是否可以運行臨時容器,該容器什麼都不做或者不會產生錯誤。

+0

我不確定這是否有幫助,但你有沒有嘗試http://stackoverflow.com/questions/25845785/most-closed-container-for-a-data-only-container? 順便說一句,我結束了我的數據容器使用busybox。 –

回答

7

如碼頭工人手冊上提到:容器不需要運行。它也沒有說容器「應該」完全可以運行。

因此,不是通過運行一個僅有數據的容器來回應某些愚蠢的東西。 docker run -v /webappp --name webapp myOrg/webapp echo yo

它已經足夠只是創建容器並從不運行/啓動它。

docker create -v /webappp --name webapp myOrg/webapp

自我提醒:放浪不支持供應當碼頭工人創造!

+0

很好的答案!請注意,在docker 1.5.0中,我不得不追加一個命令來運行'docker create'工作。當然,命令不一定存在,因爲容器永遠不會運行。 – rollingBalls

3

你爲什麼要用劃痕?

只需使用nginx圖像作爲基礎。您已將圖像緩存起來,因此不會佔用更多空間,您可以調用回顯。

數據容器的一些參考文獻:

+0

你是對的大小!但我不想有任何開銷(比喻)。有一天,有人可能會啓動數據容器,因爲他可能會試圖通過讀取它的名字來思考「嗨」這是nginx。它甚至可以工作,但肯定不會與你想要的nginx配置。因爲沒有人會花更多的時間來處理僅從圖像更新數據,並使其與正在工作的nginx配置同步。對我來說,這只是解決方法,就像使用busybox或任何其他迷你發行版一樣。 – Vadimo

+0

嗯,不,因爲我不認爲你可以用'docker start'覆蓋echo命令。順便說一句,這是一個很好的理由,把容器的描述放在echo命令中,因爲它會顯示在docker ps中並進行檢查。 –