我想知道Docker的映像究竟存儲在我的本地主機中。 我可以在不使用Docker-Hub
或Dockerfile
而是使用「真正的」Docker-Image的情況下共享我的Docker-Image嗎?當我將Docker-Image推送到Docker-Hub時發生了什麼?如何在不使用Docker-Hub的情況下共享我的Docker-Image?
回答
泊塢窗圖像存儲爲文件系統層。 Dockerfile中的每個命令都會創建一個圖層。在進行一些更改(可能通過docker run
)之後,您也可以通過在命令行中使用docker commit
來創建圖層。
這些圖層默認存儲在/var/lib/docker
之下。雖然你可以(理論上)從那裏選擇文件並將其安裝在不同的碼頭服務器中,但使用Docker使用的內部表示形式可能是一個糟糕的主意。
當你推送你的圖像時,這些圖層被髮送到註冊表(默認情況下,docker hub registry,除非你用另一個註冊表前綴標記你的圖像)並存儲在那裏。推送時,圖層ID用於檢查您是否已在本地圖層或需要下載圖層。您可以使用docker history
來查看使用哪些圖層(其他圖像)(以及某種程度上,哪個命令創建了該圖層)。
至於選項,而推到泊塢窗樞紐註冊表來分享圖片,你最好的選擇是:
docker save
圖像或docker export
的容器。這將輸出一個tar文件到標準輸出,所以你會喜歡做一些像docker save 'dockerizeit/agent' > dk.agent.lastest.tar
。然後,您可以在不同的主機中使用docker load
或docker import
。承載您自己的私人註冊表。 - 已過時,查看評論
查看 docker registry image。我們已經建立了一個 s3 backed registry,您可以根據需要啓動和停止(所有狀態都保留在您選擇的s3存儲桶中),這對於設置而言是微不足道的。這也是一種有趣的方式來觀察當推送到註冊表時會發生什麼使用另一個註冊表像quay.io(我沒有親自嘗試過),儘管無論您對碼頭中心有什麼擔憂可能會適用這裏也。
爲了將來的參考,到碼頭註冊表圖像的鏈接已過時。您現在應該使用[Docker Registry 2.0](https://docs.docker.com/registry/)和[github/docker/distribution](https://github.com/docker/distribution)上的代碼 – RoelAdriaans
我' m不確定很清楚Registry 2.0是否可以替代原來的版本。它似乎錯過了一些基本的功能,如搜索http://stackoverflow.com/questions/30113726/docker-registry-2-0-api-v2 – JoshRivers
關於'碼頭保存'的問題:當我推動一個圖像,從另一個派生圖像(比如'python:2.7')到註冊表中,父圖像不需要多次上傳,除非它發生變化。我可以保存部分圖像以實現類似的文件大小優化嗎?我跳過這些箍,因爲我是一個有多個圖像的業餘愛好者,我不想爲私人註冊表付錢。 – Pieter
如果你不想使用泊塢樞紐本身,你可以通過JFrog主持下Artifactory的自己的碼頭工人庫:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
然後將自己的服務器上運行(S )。
其他託管供應商可供選擇,例如CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
買入碼頭。IO
基於this blog,下面的命令被執行:
docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
將圖像複製到服務器,並導入如下:
docker load --input latestversion-1.0.0.tar
- 1. 的Infinispan:clustred情況下不共享緩存
- 2. 如何在不使用AppStore和UDID的情況下共享IPA以下載
- 3. 如何在不打開UIActivityViewController的情況下共享whatsapp?
- 4. 如何在不映射的情況下共享POJO?
- 5. 如何在不使用庫的情況下共享.NET項目之間的類?
- 6. 如何在不使用Maven存儲庫的情況下共享karaf功能?
- 7. 如何在不使用git push的情況下共享本地更改?
- 8. 如何在不共享源代碼的情況下創建和使用Android庫?
- 9. 可可單和共享的情況下
- 10. 如何在不指定共享類型的情況下使用Box Java SDK創建共享鏈接?
- 11. 如何在代碼優先的情況下共享EF6對象
- 12. 綁定情況下被重新使用時ValidationRules不能共享
- 13. 如何在休眠/彈簧的情況下使用共享鎖定模式?
- 14. 共享指針在不分配的情況下工作
- 15. 在不使用SSH的情況下在共享主機上部署Symfony 2.7
- 16. 在不使用內核的情況下在CUDA中寫入共享內存
- 17. 你會如何避免這種情況下的虛假共享?
- 18. OpenACC共享內存使用情況
- 19. 如何在不共享源代碼的情況下分發ROS包
- 20. php如何在不訪問數據庫的情況下共享數據
- 21. 在這種情況下,我需要共享首選項嗎?
- 22. 硒FirefoxDriver:共享會話/不同的情況下
- 23. 不正確的站點使用情況報告(共享點)
- 24. 如何在不使用會話的情況下在spring mvc中共享@RequestMapping方法中的模型對象?
- 25. 如何在不使用@Output的情況下在Angular2 rc6中的子/父組件中共享params變量?
- 26. 如何在不使用共享對話框的情況下在Google+上發佈Google+應用
- 27. 在不使用GCD方法的情況下找到共素數
- 28. 如何在無root的情況下在Python中裝載共享驅動器?
- 29. 如何在不使用第三方庫的情況下共享Facebook上的鏈接?
- 30. 如何在不顯示代碼的情況下共享使用Ruby on Rails構建的軟件
以供將來參考:上的好文章[移動碼頭圖像](https://blog.giantswarm.io/moving-docker-container-images-around/) – Mifeet