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

yaq*_*awa 232 docker docker-registry

我想知道Docker的图像在我的本地主机中存储的位置.我可以在不使用Docker-Hub或者使用Dockerfile"真正的"Docker-Image的情况下共享我的Docker-Image吗?当我将Docker-Image推送到Docker-Hub时,究竟发生了什么?

Abe*_*iño 229

Docker镜像存储为文件系统层.Dockerfile中的每个命令都会创建一个图层.您还可以docker commit在进行一些更改后(通过docker run可能)从命令行创建图层.

这些图层默认存储在/var/lib/docker.虽然你可以(理论上)从那里挑选文件并将其安装在不同的docker服务器中,但使用Docker使用的内部表示可能是一个坏主意.

当您推送图像时,这些图层将被发送到注册表(默认情况下为docker hub注册表...除非您使用其他注册表前缀标记图像)并存储在那里.推送时,图层ID用于检查您是否已在本地拥有该图层,或者是否需要下载该图层.您可以使用docker history以查看使用的图层(其他图像)(在某种程度上,创建图层的命令).

至于共享图像而不推送到docker hub注册表的选项,您最好的选择是:

  • docker save图像或docker export容器.这会将tar文件输出到标准输出,所以你想做类似的事情docker save 'dockerizeit/agent' > dk.agent.latest.tar.然后您可以使用docker loaddocker import在不同的主机中使用.

  • 托管您自己的私人注册表.- 过时,请参阅注释 查看docker注册表图像.我们已经构建了一个s3支持的注册表,您可以根据需要启动和停止(所有状态保存在您选择的s3存储桶上),这对于设置来说是微不足道的.这也是一种观察推送到注册表时会发生什么的有趣方式

  • 使用另一个注册表,如quay.io(我没有亲自尝试过),尽管您对docker hub的任何顾虑都可能适用于此处.

  • 为了将来参考,docker注册表映像的链接已过时.您现在应该使用[Docker Registry 2.0](https://docs.docker.com/registry/)和[github/docker/distribution]上的代码(https://github.com/docker/distribution) (6认同)
  • 你能不能从git repo中提取src文件,包括Dockerfile和主机上的`docker build`? (4认同)
  • 关于“docker save”的问题:当我将派生自另一个映像(假设为“python:2.7”)的映像推送到注册表时,父映像不需要多次上传,除非它发生更改。我可以保存部分图像以实现类似的文件大小优化吗?我正在跳过这些障碍,因为我是一个拥有多个图像的爱好者,并且我不想为私人注册表付费。 (2认同)

030*_*030 29

基于此博客,可以通过执行以下操作来共享没有docker注册表的docker镜像:

docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
Run Code Online (Sandbox Code Playgroud)

完成此命令后,可以将映像复制到服务器并按如下方式导入:

docker load --input latestversion-1.0.0.tar
Run Code Online (Sandbox Code Playgroud)


JSO*_*C11 11

将Docker映像发送到远程服务器可以通过3个简单步骤完成:

  1. 在本地,将Docker映像另存为.tar
docker save -o <path for created tar file> <image name>
Run Code Online (Sandbox Code Playgroud)
  1. 在本地,使用scp.tar传输到远程

  2. 在远程服务器上,将映像加载到docker:

docker load -i <path to docker image tar file>
Run Code Online (Sandbox Code Playgroud)


Mik*_*keW 7

如果您不想使用Docker Hub本身,您可以在JFrog的Artifactory下托管您自己的Docker存储库:

https://www.jfrog.com/confluence/display/RTF/Docker+Repositories

然后它将在您自己的服务器上运行.

其他托管供应​​商可用,例如CoreOS:

http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/

买了quay.io