在信创,ARM开始崛起的现在,Docker 也从一开始的只支持 x86_64 架构变为支持各种架构了,虽然 Docker 的目的是保证只要 Docker 安装好,在任意机器上运行都能达到一样的效果,但是这个的前提是Docker镜像的架构和当前服务器的架构一致,以前都是 x84_64架构自然可以,但现在也有别的架构,因此 一个镜像如果只有 x86_64 架构的版本,那么是无法在
Arm 架构的服务器上运行的。
和运行同理,打包也是如此,x86_64 的机器只能打包 x86_64 的镜像。
但是新版本的 docker (从 server 版本 大于 19.10 开始) 有了一个插件 buildx , 这个插件支持从一个平台构建多个平台的镜像。
下面是常见的几种方式
Docker Desktop
此软件是用于开发,测试使用的,很方便,因为新版本默认集成了 buildx ,也集成了多平台镜像模拟运行。、
我安装的版本
docker version
输出结果
Client:
Cloud integration: v1.0.35+desktop.13
Version: 26.1.1
API version: 1.45
Go version: go1.21.9
Git commit: 4cf5afa
Built: Tue Apr 30 11:46:57 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Desktop
Engine:
Version: 26.1.1
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: ac2de55
Built: Tue Apr 30 11:48:28 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.31
GitCommit: e377cd56a71523140ca6ae87e30244719194a521
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
buildx 情况
docker buildx ls
输出
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
default* docker
\_ default \_ default running v0.13.2 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/loong64, linux/ppc64
可以看到,build 支持打包多个架构的镜像,如打包 linux/a