文章目录
基础知识,及 安装并启用 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 .
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论