簡體   English   中英

有沒有一種聰明的方法可以用 Docker 做到這一點(也許通過保存/加載/差異)?

[英]Is there a clever way to do this with Docker (maybe via save/load/diff)?

我有大量可以運行代碼的計算機。 但是,我只能在“會話”中這樣做,它們之間沒有文件系統持久性。 至少有這些會議的能力外將文件上傳到這些主機,這是否依然存在。 基本上,這些計算機自己下載的東西沒有任何內容,但我可以選擇明確地向它們發送文件。

帶寬是這些計算機上的重要商品。

現在,我在這些計算機上運行各種 docker 鏡像。 如果我docker pull一些圖像,它會在下一個會話中消失。 我發現我可以在我的計算機上docker save一個圖像,將它上傳給他們(所以它會堅持下去),然后在每個會話開始時他們可以docker load 在實踐中,我發送給他們 debian:wheezy,因為他們需要的大多數其他圖像都基於此,因此即使每個會話仍然重復下載,至少它只是 debian:wheezy 上的更改。

我的問題如下。 假設我將基礎 debian:wheezy 更改為我們可以稱為 debian:cheesy 的東西(不是直接交換,這樣 wheezy 在 cheesy 的圖像樹中),並且這顯着增加了它的大小。 此外,我未來的所有圖像現在都將基於 cheesy,所以我現在想將 cheesy 上傳到我的計算機。

有沒有辦法在不以某種方式重新發送與 wheezy 相關的數據的情況下發送它們?

Docker save 目前不具備復制部分鏡像的能力。 保存和加載的最初設計目標是在氣隙系統之間傳輸圖像及其所有依賴項。 (來源:我是save and load的最初作者)

問題是,雖然您可能有 debian:wheezy,但您如何確定每個系統之間都有相同的 debian:wheezy? 成功保存和加載的唯一可靠方法是序列化整個樹。

相反,您應該考慮運行私有 docker 注冊表。 您可以發布 myorg:cheesy 並讓 docker pull 和 docker push 處理所有依賴項。 這也將降低您的整體帶寬使用率,因為只會傳輸您尚未擁有的層。 從長遠來看,您的管理也會容易得多。

要運行您自己的私有注冊表,您應該查看https://github.com/docker/distribution ,它是一個開源私有存儲庫。 如果您需要開發人員的幫助,您可以跳到 freenode 的 #docker-distribution。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM