将图像推送到docker hub

时间:2018-12-16 22:10:41

标签: docker dockerhub

我还不太了解dockerhub。 我遇到以下情况:

  • 我为中心标记了几张图像
  

docker tag myimageA myuser / myrepo:1

     

docker标签myimageB myuser / myrepo:1

     

docker标签myimageC myuser / myrepo:1

然后我用docker push myuser/myrepo

推动它们

现在,当删除我的所有本地映像并再次拉出自己的docker存储库时,执行docker images时只有一个条目:

myuser/myrepo

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

问题:docker push是否会推送所有为仓库名称空间标记的图像?还是有一种方法可以将单个图像推送到存储库并一一拉动它们?

2 个答案:

答案 0 :(得分:2)

一次只有一张图像具有给定的标签/标签。当您运行docker tag myimageC myuser/myrepo时,图片B丢失了标签,而docker push仅推送了最近标签的单个图片。如果您提供了另一个带有该标签的图像并将其推送,它将用您推送的内容替换Docker Hub上以前的内容。

如果这些图像确实不同,则最佳实践是将它们作为单独的名称推送,例如 myuser/myimageC。同样不要忘记图像名称的“标签”部分;通常使用版本号或构建详细信息标记图像(例如,如果您同时构建基于Alpine和Ubuntu的图像),并且在许多环境中,默认的...:latest标签是移动目标一个问题。

答案 1 :(得分:2)

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

创建图像时:

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

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

如果您标记了图像:

  

docker tag myimageA myuser / myrepo:1

     

docker标签myimageB myuser / myrepo:1

     

docker标签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中心使用<< strong> myuser > / myrepo:1将映像的根存储到您的帐户中,但在其他情况下,此段用于标识您的存储库主机。 myuser / << strong> myrepo >:1,它是图像的名称,因此,如果您使用的是A,B或C,则图像名称应与myuser / myrepo不同:<<如果最后一个元素用于对同一图像进行版本控制,则strong> 1 >。通常用于对它进行版本控制,并且有一些标记用作默认标记,例如:最后。如果您使用此词,则docker将使用具有该docker映像能力的最新映像。

所以回答你的问题:

问题:泊坞窗是否会推入所有为仓库名称空间标记的图像?还是有办法将单个图像推送到存储库并一一拉出它们?

您必须将每个映像独立地推送到您的Docker中心帐户或Docker注册表服务器中。虽然您可以使用管道命令以一句话推送所有docker映像。无法通过单个docker命令立即推送所有本地。