2016-04-01 143 views
1

我想分發一些可拋棄的碼頭圖像(圖像只啓動一次,直接刪除)。爲了實現這一點,我必須能夠將我的碼頭圖像推送到其他主機可以從中拖出的碼頭註冊表。其他碼頭服務器將此圖片拉出來,運行並在終止後將其移除。動態碼頭註冊表

不幸的是(afaik)沒有簡單的方法從私有碼頭註冊表中刪除圖像。

是否有一種簡單的方法來啓動一次性碼頭註冊表,我可以用它來分發?有沒有辦法接受任何不安全的註冊表?

到目前爲止,我總是通過配置不安全註冊表:--insecure-registry

是否有可能不使用泊塢窗註冊表分發泊塢窗圖像的替代方案?

回答

1

當然,您可以通過幾種方式來分發圖像。我應該提到的最重要的事情可能是建立一個註冊表(特別是由發行團隊支持的最新版本的「v2註冊表」)is kind of a pain。這並不難,而且比第一版註冊表(舊的python項目)要早幾年,但這並不是你想要解決這個問題的方法,尤其是在你尋找一個快速而簡單的解決方案的時候。

因此,您將剩下的圖像或容器分發爲tarball檔案。你可以在這裏使用兩組命令,並且有一些小的(但是重要的)區別。首先,讓我們看看只傳輸圖像,而不是容器。因此,您將在Docker主機上使用docker save,然後將tarball傳輸到目標機器,然後使用docker load從tarball創建映像。例如,在主機上:

docker save --output myImage.tar myImage:latest 

然後你就可以rsyncsftp(或其他)的myImage.tar壓縮包傳送到目標機器。然後在那個主機上:

docker load --input myImage.tar 

這很簡單,但假設你有一個容器從你想要傳輸的映像運行。問題是你可以傳輸圖像,但是它會在啓動後丟失對圖像文件系統所做的所有更改。解決方法是使用docker exportdocker import。這會將所有中間更改與基本文件系統映像一起保存到文件系統中。

因此,您將在您的docker主機上使用docker export命令,當然還要在目標機器上使用docker import。和另一個例子一樣,您需要將docker export生成的壓縮包傳輸到目標機器。例如,搬運工主機上:

docker export myContainer > myContainer.tar 

然後在目標機器上,你已經轉移myContainer.tar後它:

cat myContainer.tar | docker import - jotschi/myContainerImage 

現在你已經有了目標的圖像稱爲jotschi/myContainerImage ,然後您可以創建一個容器:

docker run -d --name=myContainer -p 80:80 jotschi/myContainerImage