【问题标题】:Purpose/usage of Docker build -t flag vs Docker tagDocker build -t flag vs Docker tag 的目的/用法
【发布时间】:2021-06-24 17:47:25
【问题描述】:

想澄清我的理解,因为我在学习documentation后感到困惑

对于命令docker build -t,定义表明

-t flag "名称和可选的 'name:tag' 格式的标签"

然后我们运行 docker tag xxx 来“创建一个引用 SOURCE_IMAGE 的标签 TARGET_IMAGE”,然后我们才能推送到注册表。

这里 2 标记的功能有什么区别? -t 标志是否标记为构建(图像)的名称,然后 docker tag 在推送之前位于“已标记”构建之上?

我尝试在线搜索和这里的问题,但找不到任何解释。

【问题讨论】:

  • docker tag-t 标志之间没有区别。 -t 标志只是简写,而不是构建图像并随后运行 docker tag 来标记图像 ID。
  • 简而言之:docker build -t name:tag . == docker build . && docker tag <id_of_precedent_buid_written_on_screen> name:tag
  • 感谢您的澄清,为什么有很多指南同时指定两者?例如,AWS 指南“Push commands for ECR”docs.aws.amazon.com/AmazonECR/latest/userguide/… 和控制台内。第 3 步:从 Dockerfile 构建 Docker 映像。 “docker build -t hello-world。”之后使用“docker tag hello-world:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest”。这两个步骤的目的有区别吗?
  • 这是否意味着如果我们使用docker build -t 标志,我们可以跳过命令步骤docker tag
  • 您的示例首先使用本地注册表 (hello-world) 中的名称标记图像。然后它用远程注册表中的名称标记它 (aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest)。这允许您将图像 push 到该注册表。

标签: docker


【解决方案1】:

在上面的(学分)cmets的帮助下,在这个视频https://youtu.be/vWSRWpOPHws?t=354有清晰的解释,

我终于清除了我的疑虑。 docker build -t name:tag 是在docker本地标记图像。而使用tag 命令正在使用其他 repo(dockerhub 除外)重命名,以便 docker 识别.. 如上面和视频中的 cmets 所述。

我还尝试了一个快捷方式来验证它是否有效,因此显然我们可以使用 docker build -t <aws-ecr-uri-or-other-remote-repo-uri>/<same-name-as-your-app>:tag 快​​捷方式将两个步骤合二为一,然后您可以继续使用 docker push 将其推送到 AWS ECR

除了问题之外只是一个注释。 AWS ECR 存储库 == 每个 1 个图像。 (对于不同的版本)。因此,如果您有不同的图像,则必须在 ECR 中为每个图像创建不同的存储库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多