2017-06-02 112 views
1

我在我的系統中下載了一個ubuntu os的鏡像,並且在提交了3個鏡像之後(每個鏡像都有一個從鏡像之前的增量更改),現在我有了最終鏡像。現在我需要這個最終映像的Dockerfile,這樣我就可以在容器的開始處包含像啓動服務那樣的命令。新提交的Docker鏡像的Dockerfile

我已經使用這個命令,

sudo docker commit --change='CMD service apache2 start' 172d6dc34471 server_startup

使Apache服務開始運行的容器中時。這將啓動容器中的服務,但不會進入容器內部。它只是啓動Apache並退出到我的本地環境。

我想知道如何獲取我的最終圖像Dockerfile,以便我可以包含啓動命令。

我也試過這dockerfile from image,但它不工作。它只是拋出.sock文件丟失的錯誤。我已經用我第一次下載的新圖像和父圖像進行了嘗試。

任何幫助,非常感謝。謝謝。

+0

爲什麼你需要做手工的增量變化,而不是直接使用Dockerfile? – Robert

回答

1

可以使用

docker history --no-trunc your_image

它會告訴你(以相反的順序)做了什麼

這是不太用戶比從圖像dockerfile友好的,但它基本上是同樣的事情。

我在某個地方有一個乾淨的Python腳本,我會檢查併發布它。

編輯:剛纔這應該表現出很多

docker history your_image | docker inspect $(awk ' NR>1 {print $1}')

+0

我如何使用它來編輯dockerfile?你看我需要添加啓動命令。 – Bej

+0

你必須比較你的原始Dockerfile和'docker history your_image |碼頭檢查$(awk'NR> 1 {print $ 1}')' – user2915097

+0

這就是我試圖說,我沒有一個碼頭文件我的形象,因爲它是從另一個圖像,我拉。 – Bej

1

由於CMD您需要提供在保持前景無守護程序。這不是由service完成的。

你應該嘗試:

sudo docker commit --change='CMD apache2 -DFOREGROUND' 172d6dc34471 server_startup