**这是本文档旧的修订版!**
构建多平台镜像
如需使用 buildx,需要开启docker的实验功能后,才可以使用,开启方式
nano /etc/docker/daemon.json
{
"experimental": true
}
可选:
~/.docker/config.json "experimental" : "enabled"
重启Docker使生效:
sudo systemctl daemon-reload sudo systemctl restart docker
确认是否开启:
docker version -f’{{.Server.Experimental}}’
如果输出true,则表示开启成功
使用buildx构建
使用 docker buildx ls 命令查看现有的构建器
docker buildx ls
创建并构建器:
# 下面的创建命令任选一条符合情况的即可 # 1. 不指定任何参数创建 docker buildx create --use --name multiarch-builder # 2. 如创建后使用docker buildx ls 发现构建起没有arm架构支持,可使用--platform明确指定要支持的构建类型,如以下命令 buildx-config.toml 配置文件写法类似: # https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md# registry configures a new Docker register used for cache import or output.[registry."zh-registry.geostar.com.cn"] mirrors = ["zh-registry.geostar.com.cn"] http = true insecure = true 启用构建器 docker buildx inspect multiarch-builder --bootstrap docker buildx 构建arm64镜像的命令 docker buildx build --platform=linux/arm64,linux/amd64 -t xxxx:tag . --push 提示:当指定多个架构时,只能使用 --push 推送到远程仓库,无法 --load,推送成功后再通过 docker pull --platform 来拉取指定架构的镜像 在x86上运行arm镜像可参考 github/qemu-user-static ,简要描述如下: 执行如下命令安装: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 之后即可运行arm版本的镜像,如: docker run --rm -t arm64v8/fedora uname -m
hub.docker.com 需要在外网构建,内网连接不上docker.io
docker login -u netfun2000 docker buildx create --use --name multiarch-builde docker buildx build --platform=linux/arm64,linux/amd64,linux/arm -t netfun2000/grafana:v2.0.2 . --push
阿里镜像仓库
docker login --username=netfun2000@foxmail.com crpi-7pakhaa9ktpqkcg1.cn-beijing.personal.cr.aliyuncs.com docker buildx create --use --name multiarch-builde docker buildx build --platform=linux/arm64,linux/amd64,linux/arm/v7 -t crpi-7pakhaa9ktpqkcg1.cn-beijing.personal.cr.aliyuncs.com/teslamate2025/grafana:v2.0.2 . --push
