美文网首页
使用buildx进行多架构(MUlti-Arch)容器镜像管理

使用buildx进行多架构(MUlti-Arch)容器镜像管理

作者: DOB_8199 | 来源:发表于2021-05-31 15:40 被阅读0次

    Docker版本要求


    - 19.03

    查看buildx版本


    - buildx version

    设置环境变量(或从源码构建)


    buildx 命令属于实验特性,因此首先需要开启该特性。

    查看 Docker 版本返回的内容中,如果出现Experimental: true字样就代表已经开启该特性了。下面的这一步骤就可以省略。

    方式一

    $ export DOCKER_CLI_EXPERIMENTAL=enabled

    方式二

    编辑 ~/.docker/config.json 文件,新增如下内容(以下的演示适用于事先不存在 .docker 目录的情况下)

    开启binfmt_misc


    开启 binfmt_misc 来运行非本地架构 Docker 镜像

    如果读者使用的是 Mac 或者 Windows 版本 Docker 桌面版,可以跳过这个步骤,因为 binfmt_misc 默认开启。

    如果使用是 Linux 系统,需要设置 binfmt_misc。在大部分发行版中,这个操作非常简单,但是现在可以通过运行一个特权 Docker 容器来更方便的设置:

            $ docker run--rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

    通过检查 QEMU 处理程序来验证 binfmt_misc 设置是否正确:

    然后,验证下指定架构处理程序已经启用,例如:

    切换至多架构构建器 


    默认情况下,Docker 会使用旧的构建器,不支持多架构构建。

    为了创建一个新的支持多架构的构建器,需要运行:

    创建新的支持多架构的构建器:

    $ docker buildx create --use --name mybuilder 

    验证新的构建器已经生效


    $ docker buildx ls

    搞定。现在 Docker 会使用新的构建器,支持构建多架构镜像。

    构建多架构镜像


    1. 创建一个简单的 Go 应用程序,输出当前运行环境的架构信息(略)

    2. 创建一个Dockerfile来容器化这个应用

    这是一个多阶段 Dockerfile,通过 Go 编译器构建我们的应用程序,然后将构建出来的二进制程序使用 Alpine Linux 镜像创建成最小镜像。

    现在,让我们使用 buildx 来构建一个支持 arm、arm64 和 amd64 架构的多架构镜像,并一次性推送到 Docker Hub:

    $ docker buildx build -t blackdob/mybuilder1 --platform=linux/arm,linux/arm64,linux/amd64 -f ./build/Dockerfile . --push

    --platform 参数将通知 buildx 构建 amd64 和 aarch64 架构的镜像

    --push 生成一份多架构的 manifest 并直接将所有镜像推送至 Docker Hub

    A&Q


    1. 在push之前注意要 docker login

    相关文章

      网友评论

          本文标题:使用buildx进行多架构(MUlti-Arch)容器镜像管理

          本文链接:https://www.haomeiwen.com/subject/vlxdsltx.html