docker:buildx

构建多平台镜像

如需使用 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,则表示开启成功

使用 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 login -u netfun2000

docker buildx build --platform=linux/arm64,linux/amd64,linux/arm -t netfun2000/grafana:v2.0.2 . --push
  • docker/buildx.1748749616.txt.gz
  • 最后更改: 2025/06/01 11:46
  • admin