如何在不使用Docker-Hub的情况下共享我的Docker-Image?

我想知道Docker的镜像究竟存储在我的本地主机上。 我可以在不使用Docker-HubDockerfile情况下共享我的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 loaddocker 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