Docker push语法用法示例详解
将镜像上传至注册表。以下是一些推送新镜像常见原因:
- 共享镜像:通过将镜像推送到注册表,其他团队成员或开发者可以轻松地获取并使用您创建的镜像。这样可以提高团队协作效率,并确保所有人都在使用相同的基础镜像。
- 便于部署:将镜像推送到注册表后,可以在不同的环境中使用相同的镜像进行部署。无论是在开发、测试还是生产环境,您都可以使用相同的镜像来确保应用程序的一致性和可靠性。
- 镜像版本控制:通过推送镜像到注册表,您可以方便地管理和跟踪镜像的版本。如果您在注册表上维护了多个标签,每个标签对应一个特定的镜像版本,您可以根据需要选择特定的版本进行部署和使用。
- 可靠性和备份:将镜像推送到注册表后,可以将注册表视为一个中心化的存储库,用于存储和管理镜像。这样,即使本地环境中的镜像丢失或损坏,也可以从注册表重新拉取并恢复镜像。
用法
docker push [OPTIONS] NAME[:TAG]
描述
使用 docker image push
命令将您的镜像共享到 Docker Hub 注册表或自托管注册表。
有关有效镜像和标签名称的更多信息,请参考 Docker image tag用法描述参数示例。
通过在终端中运行过程中按下 CTRL-c
等方式终止 docker image push
进程,可以终止推送操作。
docker push
期间会显示进度条,显示未压缩大小。在发送之前,要推送的实际数据量将被压缩,因此上传的大小不会由进度条反映。
注册表凭据由 docker login
管理。
并发上传
默认情况下,Docker 守护程序每次会推送镜像的五个层。如果您的带宽较低,可能会导致超时问题,您可能需要通过 --max-concurrent-uploads
守护程序选项来降低这个数量。有关更多详细信息,请参见守护程序文档。
选项
选项 | 简写 | 默认值 | 描述 |
---|---|---|---|
–all-tags | -a | 将镜像的所有标签推送到仓库 | |
–disable-content-trust | true | 跳过镜像签名 | |
–quiet | -q | 禁止冗长输出 |
示例
将新镜像推送到注册表
首先通过找到容器ID(使用 docker container ls
)并将其提交为新镜像名称来保存新镜像。请注意,命名镜像时只允许使用 a-z0-9-_.
:
docker container commit c16378f943fe rhel-httpd:latest
docker container commit用法示例
现在,使用镜像ID将镜像推送到注册表。在此示例中,注册表位于名为 registry-host
的主机上,并在端口5000上监听。为此,请使用主机名或IP地址以及注册表的端口为镜像打标签:
docker image tag rhel-httpd:latest registry-host:5000/myadmin/rhel-httpd:latest
然后,将镜像推送到注册表:
docker image push registry-host:5000/myadmin/rhel-httpd:latest
通过运行以下命令检查是否成功:
docker image ls
您应该看到 rhel-httpd
和 registry-host:5000/myadmin/rhel-httpd
都列出了。
推送镜像的所有标签(-a, --all-tags)
使用 -a
(或 --all-tags
)选项推送本地镜像的所有标签。
以下示例为一个镜像创建多个标签,并将所有这些标签推送到 Docker Hub:
docker image tag myimage registry-host:5000/myname/myimage:latest
docker image tag myimage registry-host:5000/myname/myimage:v1.0.1
docker image tag myimage registry-host:5000/myname/myimage:v1.0
docker image tag myimage registry-host:5000/myname/myimage:v1
docker image tag用法
现在,镜像已经有多个名称的标签:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myimage latest 6d5fcfe5ff17 2 hours ago 1.22MB
registry-host:5000/myname/myimage latest 6d5fcfe5ff17 2 hours ago 1.22MB
registry-host:5000/myname/myimage v1 6d5fcfe5ff17 2 hours ago 1.22MB
registry-host:5000/myname/myimage v1.0 6d5fcfe5ff17 2 hours ago 1.22MB
registry-host:5000/myname/myimage v1.0.1 6d5fcfe5ff17 2 hours ago 1.22MB
当使用 --all-tags
选项推送时,将推送 registry-host:5000/myname/myimage
镜像的所有标签:
docker image push --all-tags registry-host:5000/myname/myimage
推送引用到仓库 `registry-host:5000/myname/myimage`
195be5f8be1d: Pushed
latest: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1.0: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1.0.1: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: