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-trust | true | 跳过镜像签名 |
--platform | API 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-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 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