Docker buildx 的跨平台编译

docker buildx

默认的 docker build 命令无法完成跨平台构建任务,我们需要为 docker 命令行安装 buildx 插件扩展其功能。buildx 能够使用由 Moby BuildKit 提供的构建镜像额外特性,它能够创建多个 builder 实例,在多个节点并行地执行构建任务,以及跨平台构建。

启用 Buildx

  • macOS 或 Windows 系统的 Docker Desktop,以及 Linux 发行版通过 deb 或者 rpm 包所安装的 docker 内置了 buildx,不需要另行安装。

  • 如果你的 docker 没有 buildx 命令,可以下载二进制包进行安装:

  • 首先从 Docker buildx 项目的 release 页面找到适合自己平台的二进制文件。
    下载二进制文件到本地并重命名为 docker-buildx,移动到 docker 的插件目录 ~/.docker/cli-plugins。
    向二进制文件授予可执行权限。

https://github.com/docker/buildx/releases/tag/v0.10.3

Docker buildx 的跨平台编译_第1张图片

背景

随着国产化和信创的推进,为应用适配多个操作系统和处理器架构的需求越来越普遍。常见做法是为不同平台单独构建一个版本,当用来开发的平台与部署的目标平台不同时,实现这一目标并不容易。例如在 x86 架构上开发一个应用程序并将其部署到 ARM 平台的机器上,通常需要准备 ARM 平台的基础设施用于开发和编译。

一次构建多处部署的镜像分发大幅提高了应用的交付效率,对于需要跨平台部署应用的场景,利用 docker buildx 构建跨平台的镜像也是一种快捷高效的解决方案。

通过 docker pull 或 docker run 拉取一个支持跨平台的镜像时,docker 会自动选择与当前运行平台相匹配的镜像。由于该特性的存在,在进行镜像的跨平台分发时,我们不需要对镜像的消费做任何处理,只需要关心镜像的生产,即如何构建跨平台的镜像。

安装docker buildx

macOS 或 Windows 系统的 Docker Desktop,以及 Linux 发行版通过 deb 或者 rpm 包所安装的 docker 内置了 buildx,不需要另行安装。
如果你的 docker 没有 buildx 命令,可以下载二进制包进行安装:

  1. 首先从 Docker buildx 项目的 release 页面找到适合自己平台的二进制文件。
  2. 下载二进制文件到本地并重命名为 docker-buildx,移动到 docker 的插件目录 ~/.docker/cli-plugins。
  3. 向二进制文件授予可执行权限
    如果本地的 docker 版本高于 19.03,可以通过以下命令直接在本地构建并安装,这种方式更为方便:
$ DOCKER_BUILDKIT=1 docker build --platform=local -o . "https://github.com/docker/buildx.git"
$ mkdir -p ~/.docker/cli-plugins
$ mv buildx ~/.docker/cli-plugins/docker-buildx

下载docker-bulidx 二进制文件

https://github.com/docker/buildx/releases/tag/v0.10.3

Docker buildx 的跨平台编译_第2张图片

$ mkdir -p ~/.docker/cli-plugins
$ mv buildx ~/.docker/cli-plugins/docker-buildx

mv buildx-v0.10.3.linux-amd64 ~/.docker/cli-plugins/docker-buildx

[root@ncayu8847 docker]# ll ~/.docker/cli-plugins/docker-buildx
-rwxr--r--. 1 root root 49287168 219 16:58 /root/.docker/cli-plugins/docker-buildx

Docker buildx 的跨平台编译_第3张图片

Docker buildx 的跨平台编译_第4张图片

[root@ncayu8847 docker]# docker buildx -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker buildx [OPTIONS] COMMAND

Extended build capabilities with BuildKit

Options:
      --builder string   Override the configured builder instance

Management Commands:
  imagetools  Commands to work on images in registry

Commands:
  bake        Build from a file
  build       Start a build
  create      Create a new builder instance
  du          Disk usage
  inspect     Inspect current builder instance
  ls          List builder instances
  prune       Remove build cache
  rm          Remove a builder instance
  stop        Stop builder instance
  use         Set the current builder instance
  version     Show buildx version information

Run 'docker buildx COMMAND --help' for more information on a command.

你可能感兴趣的:(docker容器,linux,docker)