如何在不使用Docker-Hub的情况下共享我的Docker-Image?
我想知道Docker的镜像究竟存储在我的本地主机上。 我可以在不使用Docker-Hub
或Dockerfile
情况下共享我的Docker-Image,而是使用“真正的”Docker-Image? 当我将我的Docker-Image推送到Docker-Hub时发生了什么?
Docker镜像存储为文件系统层。 Dockerfile中的每个命令都会创build一个图层。 你也可以通过在命令行中使用docker commit
来做一些更改(可能通过docker run
)来创build图层。
这些图层默认存储在/var/lib/docker
。 虽然你可以(理论上)从这里select文件并将其安装在不同的docker服务器上,但是使用Docker使用的内部表示forms可能是个不错的主意。
当你推送你的图像时,这些图层将被发送到registry(默认情况下为docker hubregistry,除非用另一个registry前缀标记图像)并存储在那里。 推送时,图层ID用于检查您是否已在本地图层或需要下载图层。 您可以使用docker history
来查看使用哪个图层(其他图像)(以及某种程度上,哪个命令创build了该图层)。
至于共享图像而不推送到docker中心registry的选项,您的最佳select是:
-
docker save
一个图像或docker export
一个容器。 这将输出一个tar文件到标准输出,所以你会喜欢做一些像docker save 'dockerizeit/agent' > dk.agent.lastest.tar
。 然后你可以在不同的主机上使用docker load
或docker import
。 -
托pipe您自己的私人registry。 – 过时,请参阅注释
查看dockerregistry图像 。我们已经构build了一个s3支持的registry ,您可以根据需要启动和停止(所有状态都保存在您select的s3存储桶中),这些设置很简单。这也是观察推送到registry时会发生什么的有趣方式 -
使用另一个registry像quay.io(我没有亲自尝试过),虽然无论您对docker中心的任何担忧都可能适用于此。
如果您不想使用Docker Hub本身,您可以在JFrog的Artifactory下托pipe您自己的Docker存储库:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
然后将在您自己的服务器上运行。
其他托pipe供应商可用,例如CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
买了quay.io