docker image push

描述将镜像上传到注册表
用法docker image push [OPTIONS] NAME[:TAG]
别名
docker push

描述

使用 docker image push 命令将您的镜像分享到 Docker Hub 注册表或自托管注册表。

有关有效的镜像和标签名称的更多信息,请参阅 docker image tag 参考。

终止 docker image push 进程,例如在终端中运行时按下 CTRL-c,将终止推送操作。

在 docker push 期间会显示进度条,显示未压缩的大小。实际推送的数据在发送前会进行压缩,因此进度条不会反映上传后的大小。

注册表凭据由 docker login 管理。

并发上传

默认情况下,Docker 守护进程每次会推送镜像的五个层。如果您的带宽较低,这可能会导致超时问题,您可能需要通过 --max-concurrent-uploads 守护进程选项降低此限制。有关更多详细信息,请参阅守护进程文档

选项

选项默认描述
-a, --all-tags将镜像的所有标签推送到仓库
--disable-content-trusttrue跳过镜像签名
--platformAPI 1.46+ 将特定平台的清单作为单平台镜像推送到注册表。
镜像索引不会被推送,这意味着包括证明在内的其他清单不会被保留。
'os[/arch[/variant]]':显式平台(例如 linux/amd64)
-q, --quiet抑制详细输出

示例

将新镜像推送到注册表

首先,通过查找容器 ID(使用 docker container ls)来保存新镜像,然后将其提交到新的镜像名称。请注意,命名镜像时只允许使用 a-z0-9-_. 字符

$ docker container commit c16378f943fe rhel-httpd:latest

现在,使用镜像 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-httpdregistry-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 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

The push refers to repository [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: 4527