docker 基于交叉编译方式构建跨平台镜像

基础知识,及 安装并启用 QEMU 多架构支持

# Buildx 限制和应对
    1、使用 buildx  作为docker CLI 插件要求 Docker 版本 >= 19.03
    2、构建的宿主机 内核版本 要求 >= 4.8
    # Tips: 即便内核版本大于 Linux kernel >= 4.8,也有可能还没有开启内核相关的特性支持,需要手动开启

# 安装并启用 QEMU 多架构支持
    docker run --privileged --rm tonistiigi/binfmt --install all
    # 查看binfmt_misc是否存在(Buildx 会依赖内核的 binfmt_misc 支持)
    ls -al /proc/sys/fs/binfmt_misc/

# 列出已有 builder,确认一下(你会看到原本有一个默认的default 构建器)
    docker buildx ls

# 新建一个 multi-arch builder(仅需做一次)(可以显示指定 --driver docker-container )
    # Tips: 创建成功后状态是 Status: inactive 需要使用 --bootstrap 参数来启动构建器
    docker buildx create --name mybuilder --use
    # docker buildx create --name mybuilder --use --driver docker-container

# 启动 mybuilder 构建器
    docker buildx inspect --bootstrap --builder mybuilder
    # 查看 支持的异构平台有哪些
    # docker buildx inspect --bootstrap

准备一个阿里云ACR容器服务个人版

## 1、创建一个命名空间,勾选自动创建仓库,将该命名空间设置为私有

开始构建docker images,并导出镜像 或者推送到远端仓库

# 准备Dockerfile,并执行构建
    cat > Dockerfile.amd64 <<"EOF"
FROM debian:11
RUN apt-get update && apt-get install -y \
    tcpdump iproute2 \
    && rm -rf /var/lib/apt/lists/*
CMD ["bash"]
EOF

# 使用指定dockerfile构建 amd64架构的镜像
    docker buildx build -f ./Dockerfile.amd64 --platform linux/amd64 -t my-debain11:latest --load .
    # docker buildx build --platform linux/arm/v7,linux/arm64,linux/amd64 -t my-debian11:latest --load .

# 导出构建的images
    docker save -o my-debian11.tar.gz my-debain11:latest

# 构建arm32
    docker buildx build -f ./Dockerfile.arm32 --platform linux/arm/v7 -t my-debian11:latest .

# 异构场景,构建完成后,并推送到仓库(以阿里ACR个人版为例)
    # 先登录阿里云Docker Registry(会让你输入密码)
    docker login --username=182xxxxxxx@139.com registry.cn-hangzhou.aliyuncs.com

    # 用指定dockerfile构建多个架构平台镜像,并推送到ACR容器仓库
    docker buildx build  -f ./Dockerfile.amd64 --platform linux/arm/v7,linux/arm64,linux/amd64 -t registry.cn-hangzhou.aliyuncs.com/byy-images/my-debian11:latest --push .
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/1477.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2025/5/12作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录