⚠️注意1:到目前位置,buildx支持 linux/amd64, linux/386, linux/arm/v7, linux/arm/v6, linux/arm64, linux/ppc64le, linux/s390x。所以 docker/binfmt 镜像仅注册了 arm、ppc64le 和 s390x 的处理程序。如果你需要构建、运行 RISC-V 平台的容器镜像,建议使用 multiarch/qemu-user-static 镜像镜像配置。
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes⚠️注意2:在 中我们提到需要 Linux 内核版本 >= 4.8.0;如果在内核版本为 3.10.0 的系统(比如 CentOS)上运行 docker/binfmt,会出现报错 Cannot write to /proc/sys/fs/binfmt_misc/register: write /proc/sys/fs/binfmt_misc/register: invalid argument,这是由于内核不支持 (F)标志造成的。出现这种情况,建议您升级系统内核或者换使用较高版本内核的 Linux 发行版。
小结多年前,大规模部署应用程序是一项非常耗费人力、财力、时间,还需要大量技能和技巧的事务,工程师们还需要应对应用程序所运行的每一台服务器的环境差异。这对大公司而言是个极其沉重的负担,小公司更是无力应对。
正如多年前人们无法想象大规模部署复杂的应用程序只需要一个 kubectl create 命令,不久前我们也不会想到构建多平台的容器镜像只需要一个 docker buildx build。但是,我们还有更加广阔的想象空间,自动化流程、更多平台的支持、更智能简单的工具,你能想到的都有可能在不久的将来变成现实。
技术的发展进步,不断降低了生产活动中社会平均劳动时间,提升了生产力,能够释放劳动者去做更多有益的探索。让我们不断学习、拥抱、应用新技术,在时代的浪潮中勇往直前。
可执行方案回顾确保使用的 Linux 发行版内核>=4.8.0(推荐使用 Ubuntu 18.04 以上的 TLS 发行版),且 Docker >= 19.03;
启用Docker CLI 实验性功能: export DOCKER_CLI_EXPERIMENTAL=enabled;
配置其它平台的模拟器:docker run --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d;
新建 Docker builder 实例支持多平台构建: docker buildx create --use --name mybuilder;
在项目目录中执行构建: docker buildx build --platform linux/amd64,linux/arm64,linux/arm -t harbor-community.tencentcloudcr.com/${YOUR_NAMESPACE}/multi-arch:2020-10-12 . --push。
相关演示代码、脚本可以在 https://github.com/kofj/multi-arch-demo.git 获取。
推广时间目前,腾讯云容器镜像服务 TCR已完成公测进入商业化阶段。我们也已经对部分用户开放了 Multi Arch 镜像和 OCI 云原生制品支持。如果您对该功能感兴趣,欢迎联系客服开通。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!