首页 > 解决方案 > 将图像推送到 docker hub

问题描述

我还不太了解 dockerhub。我得到了以下案例:

码头工人标签 myimageA myuser/myrepo:1

码头工人标签 myimageB myuser/myrepo:1

码头工人标签 myimageC myuser/myrepo:1

之后我推他们docker push myuser/myrepo

现在,当我删除所有本地图像并再次拉出我自己的 docker repo 时,执行时将只有一个条目docker images

myuser/myrepo

我希望能够将单个图像推送到 docker hub。除此之外,我只能查看我推送的标签(最新的、1 或其他)。

问题:会docker push推送所有标记为 repo 命名空间的图像吗?或者有没有办法将单个图像推送到存储库并一张一张地拉出来?

标签: dockerdockerhub

解决方案


我记得我在 docker 中的第一步,也清楚地记得这个小小的挣扎。

创建图像时:

docker build -t <docker_hub_user_name>/<image_name>:<tag_name> /path/to/dockerfile

该图像已使用您分配的标签注册。否则,您可以在没有-t选项的情况下构建图像,这将生成具有随机 id 的图像,以后可以重新标记。

如果您标记图像:

码头工人标签 myimageA myuser/myrepo:1

码头工人标签 myimageB myuser/myrepo:1

码头工人标签 myimageC myuser/myrepo:1

Docker 标签的工作方式如下:

"docker tag" requires exactly 2 arguments.
See 'docker tag --help'.
Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

所以你主要是使用不同的图像来标记同一个图像。或者你将三个不同的图像命名为一个相同的图像。您正在将三个不同的图像覆盖到 myuser/myrepo:1 中。

Docker hub 使用 < myuser >/myrepo:1 将映像的根存储到您的帐户中,但在其他情况下,此段用于标识您的存储库主机。myuser/< myrepo >:1 它是你的镜像的名称,所以如果你使用你的应用程序 A、B 或 C,镜像的名称应该不同,并且 myuser/myrepo:< 1 > 最后一个元素应该是用于版本控制相同的图像。它通常用于对其进行版本化,并且有一些默认使用的标签,例如:last。如果你使用这个词,docker 将使用这个 docker 镜像的最新镜像。

所以回答你的问题:

问题:docker push 会推送所有标记为 repo 命名空间的图像吗?或者有没有办法将单个图像推送到存储库并一张一张地拉出来?

您必须将每个图像独立推送到您的 docker hub 帐户或您的 docker 注册表服务器。尽管您可以使用管道命令用一句话推送所有 docker 图像。没有办法使用单个 docker 命令一次推送所有本地文件。


推荐阅读