如何使用docker一次性上传不同架构的镜像

RT.

使用docker buildx 可以在当前的机器节点上同时交叉编译上传不同的镜像如下文
使用 buildx 构建多平台 Docker 镜像

看了一下编译的过程 其实还是基于dockerfile 的不同的架构版本去镜像仓库拉取对应的镜像然后在在当前的机器节点上模拟不同的架构的环境进行的 那么有一个问题来了 最初的镜像是从哪里来的 如果我没有最初的镜像 我怎么手动上传镜像到对应的dockerhub的仓库?

>> 注意 本文的主旨是直接给你两个不同架构的镜像 然后让你手动上传的对应的hub 而不是基于一个dockerfile 去 docker buildx 并push 这两者还是有那么一点差距的


首先 下载两个不同版本的镜像 arm64 和amd64 这里为了方便直接下载busybox镜像测试

docker pull busybox:latest@sha256:f75f3d1a317fc82c793d567de94fc8df2bece37acd5f2bd364a0d91a0d1f3dab
docker pull busybox:latest@sha256:e68659cdc5b29ecef6ad0959faf535884406bcb7f2207bd5c58f1805ab577901

# 分别打上对应的标签: 并推送镜像
docker tag arm-tag 19930311/dongjel-repository:busy-amd64
docker tag arm-tag 19930311/dongjel-repository:busy-arm64
docker push 19930311/dongjel-repository:busy-amd64
docker push 19930311/dongjel-repository:busy-arm64
# 创建manifest包含两个不同架构镜像
docker manifest create 19930311/dongjel-repository:busy 19930311/dongjel-repository:busy-arm64 19930311/dongjel-repository:busy-amd64
# 标注不同架构镜像
docker manifest annotate 19930311/dongjel-repository:busy 19930311/dongjel-repository:busy-amd64 --os linux --arch amd64
docker manifest annotate 19930311/dongjel-repository:busy 19930311/dongjel-repository:busy-arm64 --os linux --arch arm64
# 推送镜像
docker manifest push 19930311/dongjel-repository:busy

此时查看对应的docker hub仓库即可看到不同的架构的镜像了

感觉还是有点繁琐的 不过谁叫在下菜 呢 如果你有更好的办法 请不妨指点一下 谢谢了

你可能感兴趣的:(docker)