是否有可能替換碼頭圖像層次中的圖像? Docker提供了一種將圖像插入到層次結構中的功能,但是是否可以替換層次結構中的圖像?我的用例是用一些系統庫創建一個映像,並在庫升級到新版本後用另一個替換這個映像。我想通過替換基本映像來測試軟件與較新庫的兼容性。更改碼頭圖像層次
Q
更改碼頭圖像層次
0
A
回答
4
一種解決方案是使用下面的方法:
- 構建一個基本圖像(或標記的現有的一個)作爲例如
mybase
- 與Dockerfile開始
FROM mybase
- 然後,當你想用新庫來測試構建您的軟件,建立一個新的
mybase
圖像(那些庫),並重新構建軟件
同樣,當我有一個建立在Ubuntu之上的容器,它通常以FROM ubuntu:12.04
開頭。在幾個月內,當14.04 LTS將被釋放時,我計劃用FROM ubuntu:14.04
更新我的Docker文件。
如果由於某種原因,你要更新尚未建有Dockerfiles容器,還有另外一種方法,但它需要多克的圖像格式,和它不能保證工作的更深入的瞭解在所有情況下。
另一種方法是在現有圖像上使用docker save
。它會輸出一個包含構成圖像的所有圖層的tarball。這些圖層將分成兩組,我會隨意稱爲「上」和「下」圖層。 「較低」層包含您要升級的基本系統映像和庫。 「上層」圖層包含您想要保持不變的應用程序。這個想法是將上層的layer.tar
文件放在一邊,然後構建新的基礎圖像(如果您願意的話,可以創建較低層的新版本),然後將較高層應用於新較低層的頂層。
中最困難的部分是:
- 解碼圖像祖先知道你應該保留哪些圖層,以及順序,你應該應用它們;
- 應用圖層,如果它們不僅添加/替換文件,而且還會刪除一些圖層。
如果你想探索這條路,首先,請確保您瞭解basics about layers :-)
相關問題
- 1. 碼頭圖像層次管理
- 2. 更改圖像層
- 3. 圖像層次
- 4. Swift:多次更改圖像
- 5. 更改CoreData實體層次
- 6. 防止碼頭在更改代碼後從頭開始構建圖像
- 7. 無法更改目錄,同時建立碼頭使用碼頭文件圖像
- 8. 使用左右箭頭更改圖像
- 9. 遞歸更改表頭的圖像
- 10. 碼頭工人:從圖像中提取圖層
- 11. 如何動態更改碼頭的基本圖像
- 12. 使用提交更新碼頭圖像進行小改動
- 13. 更改默認碼頭圖像在Fedora 23下載位置
- 14. 多次更改背景圖像JS
- 15. 依次更改UIImageView中的圖像
- 16. 多次點擊時更改UIButton圖像
- 17. 更改圖像與jquery時,一個手風琴頭更改
- 18. 多次更改圖像的jQuery代碼不起作用!
- 19. 從Gravatar更改smooch頭像
- 20. 更改頭像功能
- 21. 更改用戶頭像
- 22. 如何在時間推送單碼頭圖像層?
- 23. 標準庫頭層次
- 24. 如何將100多個碼頭圖像一次推送到碼頭中心?
- 25. 多次更改onclick()函數(背景圖像更改)
- 26. 繼承層次結構更改以減少代碼重複
- 27. 更改遺留代碼的類層次結構
- 28. Python lxml更改標籤層次結構?
- 29. 導出到JAR更改文件層次
- 30. [JS]更改多層次對象價值
事實上,這可能是一個解決方案。我的計劃是建立一個高效的系統,這個系統可以被提交併推入私人碼頭索引。具有真實數據的容器不能被Dockerfile引導的映像替換,這就是我的想法替代較低層的原因。想知道這是否可能。 – paweloque
行,理解。讓我更新我的答案,我可能有你的東西:) – jpetazzo
...更新!我希望這有幫助。 – jpetazzo