Docker支持多平台镜像构建

buildx

Posted by zhmingyong on August 6, 2024

Docker安装

Centos7.9为例

yum源更新

  • 更新为阿里云yum源
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
    

    或者

    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
    
  • 清理并重新生成缓存
    yum clean all
    yum makecache
    
  • 配置docker-ce源为阿里云
    # step 1: 安装必要的一些系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3
    sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    # Step 4: 更新并安装Docker-CE
    yum makecache fast
    yum -y install docker-ce
    # Step 4: 开启Docker服务
    service docker start
    
  • 安装docker-ce及其依赖
    yum install -y docker-ce
    

buildx driver配置

buildx配置文件buildkitd.toml,支持私服http连接

debug = true
# insecure-entitlements allows insecure entitlements, disabled by default.
insecure-entitlements = [ "network.host", "security.insecure" ]

# optionally mirror configuration can be done by defining it as a registry.
[registry."registryUrl"]
  http = true
  insecure = true

执行配置

docker buildx create --name=mybuilder --use --driver-opt image=registry/buildkit:buildx-stable-1 --config /buildkitd.toml

启动buildx容器

docker buildx inspect --bootstrap mybuilder

多平台镜像构建

构建命令

docker buildx build -t registryUrl/xxx:v1 --platform=linux/arm64,linux/amd64 -o type=image,push=true ./