Docker-Hub
Dockerfile
Docker映像存储为文件系统层。Dockerfile中的每个命令都创建一个层。你也可以在做了一些改变(可能是通过docker run)之后,从命令行使用docker commit来创建层。
docker run
docker commit
这些层默认存储在/var/lib/docker下。虽然你可以(理论上)从那里挑选文件并将其安装到不同的docker服务器上,但使用docker使用的内部表示可能不是一个好主意。
/var/lib/docker
当你推送你的图像时,这些层被发送到注册表(默认情况下是docker hub注册表,除非你用另一个注册表前缀标记你的图像)并存储在那里。当拉取时,层id用于检查你是否已经在本地拥有该层或它需要下载。你可以使用docker history来查看使用了哪些层(其他图像)(以及,在某种程度上,哪个命令创建了该层)。
docker history
至于在不推送到docker hub注册表的情况下共享映像的选项,最好的选项是:
docker save一个图像或docker export一个容器。这将输出一个tar文件到标准输出,所以你会喜欢做一些类似docker save 'dockerizeit/agent' > dk.agent.latest.tar的事情。然后你可以在不同的主机上使用docker load或docker import。
docker save
docker export
docker save 'dockerizeit/agent' > dk.agent.latest.tar
docker load
docker import
托管您自己的私有注册表。- __abc0 __abc1
(更新)
最近,有亚马逊AWS ECR(弹性容器注册表),它提供了一个Docker镜像注册表,您可以通过AWS IAM访问管理服务控制访问。当您推送映像时,ECR还可以在映像上运行CVE(漏洞)检查。
一旦您创建了您的ECR,并获得&;url &;你可以根据你所创建的权限,根据需要进行推送和拉取:因此,你可以根据自己的意愿将其设置为私有或公共。
定价是根据存储的数据量和数据传输成本。
https://aws.amazon.com/ecr/
(原来的答案)
如果你不想使用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
基于这个博客,可以在没有docker注册表的情况下共享docker镜像:
docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
一旦这个命令已经完成,你可以复制镜像到一个服务器,并导入它如下:
docker load --input latestversion-1.0.0.tar
将docker镜像发送到远程服务器可以通过3个简单步骤完成:
docker save -o <path for created tar file> <image name>
在本地,使用scp将.tar传输到远程
在远程服务器上,加载镜像到docker:
docker load -i <path to docker image tar file>