【发布时间】:2021-07-03 13:03:01
【问题描述】:
我正在使用 docker build 和 docker buildx 制作跨架构映像。我很好奇;当我推送到我的仓库时,标记是如何工作的?如果我有一个使用 32 位二进制文件的 dockerfile,我可以将图像推送到我将 64 位二进制文件推送到的同一标签吗?我怎么知道我的旧图像没有被覆盖?
【问题讨论】:
标签: docker repository cross-platform cross-compiling
我正在使用 docker build 和 docker buildx 制作跨架构映像。我很好奇;当我推送到我的仓库时,标记是如何工作的?如果我有一个使用 32 位二进制文件的 dockerfile,我可以将图像推送到我将 64 位二进制文件推送到的同一标签吗?我怎么知道我的旧图像没有被覆盖?
【问题讨论】:
标签: docker repository cross-platform cross-compiling
您必须使用docker tag 命令标记您的图像:
docker tag <id> <image_name>:<tag>
每次为特定架构构建新映像时,标记它,然后将其推送到您的 docker hub 存储库。
示例:
64位:
docker tag xxxx myImage:64bit
32 位
docker tag yyyy myImage:32bit
等等……
【讨论】:
alpine:latest,那么 docker 会自动从多个图像中选择一个与我的架构相匹配的图像。在这里看到同一个标签下有多个图像:hub.docker.com/_/…
docker manifest 命令查看多架构构建。为确保您在测试时没有覆盖任何内容,只需在您的图像中添加另一个标签,这样就不会完全覆盖,只需 latest,但至少您有备份