将图像推送到 docker 中心

Pushing images to docker hub

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

docker tag myimageA myuser/myrepo:1

docker tag myimageB myuser/myrepo:1

docker tag myimageC myuser/myrepo:1

然后我用 docker push myuser/myrepo

推送它们

现在,当删除我所有的本地图像并再次拉取我自己的 docker 存储库时,当我执行 docker images:

时将只有一个条目
myuser/myrepo

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

问题:docker push 是否会推送所有标记为回购命名空间的图像?或者有没有办法将单个图像推送到存储库并一个一个地拉取它们?

一次只有一张图片具有给定的 tag/label。当你 运行 docker tag myimageC myuser/myrepo 时,图像 B 丢失了标签,并且 docker push 只推送了单个最近标记的图像。如果您给另一个图像添加标签并推送它,它将用您推送的内容替换 Docker Hub 上之前的内容。

如果这些图像真的不同,最佳做法是将它们作为单独的名称推送,例如myuser/myimageC。也不要忘记图像名称的 "tag" 部分;用版本号或构建详细信息标记图像是很常见的(例如,如果您构建同一事物的 Alpine 和基于 Ubuntu 的图像),并且在许多环境中默认的 ...:latest 标记是移动目标会带来问题。

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

创建图像时:

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

该图像已使用您指定的标签注册。否则,您可以在不使用 -t 选项的情况下构建图像,这将生成一个具有随机 ID 的图像,稍后可以重新标记。

如果您标记图像:

docker tag myimageA myuser/myrepo:1

docker tag myimageB myuser/myrepo:1

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

所以回答你的问题:

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

您必须将每个图像单独推送到您的 docker 中心帐户或 docker 注册服务器。尽管您可以使用管道命令用一句话推送所有 docker 图像。无法使用单个 docker 命令一次推送所有本地内容。