【问题标题】:Docker 'latest' Tagging and PushingDocker“最新”标记和推送
【发布时间】:2018-07-13 16:32:30
【问题描述】:

我的构建过程生成了一个 docker 映像。我希望用标签构建 ID 和“最新”来标记最新的构建映像。我看到了两种方法。

第一种方法-(添加多个标签并推送一次)

docker tag <id> <user>/<image>:build_id  
docker tag <id> <user>/<image>:latest  
docker push <user>/<image>

第二 - 单独标记并推送

docker tag <id> <user>/<image>:build_id  
docker push <user>/<image>:build_id

docker tag <id> <user>/<image>:latest  
docker push <user>/<image>:latest

docker 文档说如果注册表中已经有一个带有特定标签的镜像,那么带有相同标签的新镜像的 docker push 会覆盖之前的镜像。

  1. 上面指定的第一个和第二个选项在功能上是否相同?
  2. 是否有任何首选方式/最佳实践?

【问题讨论】:

  • docker push 将不起作用。您需要提供图像名称。更正您的问题
  • 你是怎么解决你的问题的?

标签: docker tags docker-image docker-repository


【解决方案1】:

(关于问题的原始版本,使用 docker push 不带参数)docker push 将不起作用,除非您提供存储库名称。

$ docker push
"docker push" requires exactly 1 argument.
See 'docker push --help'.

Usage:  docker push [OPTIONS] NAME[:TAG] [flags]

Push an image or a repository to a registry

这意味着,您需要使用存储库名称进行推送。您可以提供或不提供 TAG。

如果您不提供 TAG,您将推送该存储库的所有图像。


第一种方法中,您将所有图像推送到&lt;user&gt;/&lt;image&gt; 存储库下。

第二种方法中,您将一张一张地推送图像。

问题的答案

  1. 上面指定的第一个和第二个选项在功能上是否相同?

上面指定的第一个和第二个选项在功能上是相同的(在你的情况下)。

如果您不提供 TAG,您将推送该存储库的所有图像。

你的情况

$ docker push <user>/<image>

将同时推送 TAG build_idlatest

  1. 是否有任何首选方式/最佳实践?

我认为,第二种选择更好,更受欢迎

因为,您可能不想推送所有图像。在这种情况下,您可以按照第二种方法选择要推送的图像。

【讨论】:

  • "如果您不提供 TAG,您将推送该存储库的所有图像。"任何人都可以找到这方面的参考吗?我在 Docker 的官方文档中找不到它...
  • docker push --help :将图像或存储库推送到注册表
  • 你有什么版本的 Docker?我在 19.03.6,push 命令的帮助文本非常稀疏,并且没有提及如果未提供 TAG 会推送哪些图像。
猜你喜欢
  • 1970-01-01
  • 2021-02-23
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 2020-12-25
  • 2018-10-06
相关资源
最近更新 更多