【Docker】docker 使用 buildx 同时构建多平台镜像
在使用 docker build 的时候,有的时候需要构建非当前平台版本的镜像,比如我在 arm 的机器上构建 x86 的镜像,反之亦然。这时候传统的 docker build 命令就行不通了,需要使用 buildx 来支持构建多平台镜像。
bash
1 | docker buildx build --platform linux/arm64,linux/amd64 -t ubuntu-x11:18.04 . |
执行这个命令的时候,可能会遇到如下输出(mac 下的 docker desktop)
plaintext
1 | ❯ docker buildx build --platform linux/arm64,linux/amd64 -t ubuntu-x11:18.04 . |
这个 ERROR 的含义是当前的 docker builder 不支持多平台镜像 build,需要切换 builder。
bash
1 | # 先创建一个新的 buildx builder,并指定 docker-container 作为驱动 |
这里必须要给命令加上一个 --push
选项将镜像 push 到远端仓库或者本地仓库,因为 buildx 没有办法直接把镜像写入 images 中。如果需要 push 到 dockerhub 则需要先执行 docker login
登录一下。
plaintext
1 | WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load |
不过,后续我执行命令的时候一直因为 dockerhub 没有办法连上导致拉不下原始的镜像,麻了……
plaintext
1 | ❯ docker buildx build --platform linux/amd64 -t musnows/ubuntu-x11:18.04 --push . |
更新:发现了一篇博客提到了和我相同的错误,是因为之前创建 builder 的时候用了另外一个 mybuilder,导致它识别不到我们的登录信息。所以需要使用默认的 builder 才能访问到认证信息,正常拉取容器。
使用下面俩命令切换回默认的 builder
bash
1 | docker context use default |
切换了之后就能正常构建了,不过还是没办法一次构建俩平台的镜像,又回到了原点……
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 慕雪的寒舍!
评论
表情图片预览
0 条评论
- 最新
- 最热
- 最早
- 作者
关闭评论
通知中心
「此时无声胜有声」
Artalk ErrorTypeError: Failed to fetch,无法获取评论列表数据
点击重新获取 | 打开控制台
点击重新获取 | 打开控制台