2016-01-01 87 views
3

我一直在想出爲什麼人們可以選擇將他們的設置的每個「步驟」添加到Dockerfile這將創建您的容器在一定的狀態。你可以分享Docker容器嗎?

在我心中另一種方法是剛剛創建像ubuntu一個簡單的基本圖像容器中,然後(通過shell輸入)配置的容器,你想要的方式。

但是你可以共享容器嗎?如果您只能與Docker共享圖像,那麼我會理解爲什麼人們希望在Dockerfile中列出其容器設置的每一步。

我問的原因是因爲我認爲有一些頭痛涉及到移植shell命令,配置文件更改等,以糾正Dockerfile語法並讓它們正常工作?但作爲Docker的新手,我可能高估了這項任務的難度。

編輯:我想在每個設置步驟中使用Dockerfile的另一個合理原因是關於容器初始狀態的文檔。與在某一狀態下給予容器相反,但不一定有辦法從容器的映像基礎狀態知道所有事情。

+1

當你想用非常小的改變來重建圖像時,你會有什麼建議? Docker等等的一半是儘可能地自動化,並且具有可重現的一切構建。 –

+0

@JonSkeet有效點。如果你想詳細說明答案,我會接受。 –

+0

我寧可不要,因爲只是一個休閒碼頭用戶。我懷疑另一個用戶可能會寫出更好的答案。 –

回答

4

但是,您可以共享容器嗎?如果您只能與Docker共享圖片,那麼我會理解爲什麼要在Dockerfile中列出其容器設置的每一步。

嚴格來說,。但是,您可以使用docker commit命令從現有的容器創建一個新的形象:

$ docker commit <container-name> <image-name> 

這個命令將創建一個從現有的容器一個新的形象,你可以推拉自/至登記,進口和出口從中創建新的容器。

我想問的原因是因爲我想有參與移植的shell命令,對CONFIGS文件的變化等來糾正Dockerfile語法和讓他們正常工作頭疼的一些量?但作爲Docker的新手,我可能高估了這項任務的難度。

如果您已經在使用其他一些自動配置機制,您可以簡單地將現有自動化集成到Docker構建中。例如,如果您已經使用shell腳本配置您的映像,只需在您的Dockerfile中添加一個構建步驟,在其中將您的安裝腳本添加到容器並執行它。從理論上講,這也可以用於Puppet,Salt等配置管理工具。

編輯:我想有與每個設置步驟的Dockerfile的另一個有效的理由是文檔作爲容器的初始狀態。與在某一狀態下給予容器相反,但不一定有辦法從容器的映像基礎狀態知道所有事情。

是的。正如評論中提到的那樣,有一個自動化和可重複構建您的圖像有明顯的優勢。如果您手動構建容器,然後使用docker commit創建圖像,則不必知道如何在稍後的時間點重新構建此圖像(當您想要發佈新版本的應用程序時可能需要此功能,或者在更新後的基礎圖像上重新構建圖像)。

相關問題