Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker push 常用命令。

1、docker push 简介

docker push 命令用于将本地镜像推送到指定的容器镜像仓库。使用 docker image push 命令将的镜像共享到 Docker Hub 镜像仓库或自托管镜像仓库。

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

docker push 过程中会显示进度条,其中显示未压缩的大小。发送数据之前,实际上会进行压缩,因此上传的大小不会反映在进度条上。

镜像仓库凭据由 docker login 管理。

默认情况下,Docker守护进程将一次推送5层映像。如果使用的是低带宽连接,这可能会导致超时问题,可能想要通过--max-concurrent-uploads守护进程选项来降低超时时间。更多细节请参阅守护进程文档。

参考文档:https://docs.docker.com/engine/reference/commandline/push/

2、docker push 语法

docker push [OPTIONS] NAME[:TAG]

3、docker push 命令

1)将新镜像推送到仓库

首先,通过查找容器 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 列出。

2)推送镜像的所有标记(-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

4、命令选项

选项

默认值

描述

--all-tags

,

-a

将镜像的所有标记推送到存储库中

--disable-content-trust

true

跳过镜像签名

--quiet

,

-q

抑制冗长的输出

推荐文档

相关文档

大家感兴趣的内容

随机列表