1、docker buildx 简介
docker build是从Dockerfile构建一个映像。Dockerfile是一个用来构建镜像的文本文件。docker  buildx也是用来构建镜像的,使用BuildKit扩展构建功能。默认的docker build 是不支持构架跨平台镜像的,但在 Docker 19.03+ 版本中可以使用 docker buildx build命令使用 BuildKit 构建镜像。该命令支持 --platform 参数可以同时构建支持多种系统架构的 Docker 镜像。使用docker buildx build命令的--platform参数可以指定要构建的架构的镜像。
参考地址:https://github.com/docker/buildx
2、docker buildx的安装
在Windows和macOs上,Docker Desktop已经包含了Docker Buildx,无需额外安装,可通过命令docker buildx version 可以查看是否安装buildx。
1)配置Experimental
使用docker buildx还需要开实验室特性,判断方法如下图,
开启需要将Experimental设置为true。
2)Docker客户端配置
vi ~/.docker/config.json
添加配置如下:
{
"experimental": "enabled"
}注意:config.json配置文件不存在,新建配置文件即可。
3)Docker服务端配置
vi /etc/docker/daemon.json
添加配置如下:
{
"experimental": true
}注意:config.json配置文件不存在,新建配置文件即可。
4)使用配置文件生效
systemctl daemon-reload
systemctl restart docker
5)使用docker version判断是否配置成功
6)安装docker buildx
下载地址:https://github.com/docker/buildx/releases/tag/v0.9.1
需要下载对服务器架构的程序包,将其拷贝至/usr/local/lib/docker/cli-plugins目录:
mkdir -p /usr/local/lib/docker/cli-plugins
mv buildx-v0.9.1.linux-amd64 /usr/local/lib/docker/cli-plugins/docker-buildx
chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx
7)判断安装成功
docker buildx version
3、docker buildx 模拟器的安装
模拟器可以让buildx支持跨CPU架构编译。
1)判断是否安装模拟器
docker buildx ls
2)安装模拟器
docker run --privileged --rm tonistiigi/binfmt --install all
3)离线安装
如服务器环境不能连接网络,不能使用上面的命令安装,可以将镜像导出到服务器上,然后在进行安装,
导出镜像:
docker pull tonistiigi/binfmt:latest@sha256:01882a96113f38b1928a5797c52f7eaa7e39acf6cc15ec541c6e8428f3c2347d
docker save -o tonistiigi_binfmt.tar f1d8c13be37e
加载镜像:
docker load -i tonistiigi_binfmt.tar
安装模拟器:
docker run --privileged --rm tonistiigi/binfmt --install all
4)验证模拟器是否安装成功
cat /proc/sys/fs/binfmt_misc/qemu-x86_64
enabled
输出 enabled 则安装成功,qemu-x86_64是amd,arm是qemu-aarch64。
4、选项说明
名称,简称  | 默认  | 描述  | 
--builder  | 覆盖已配置的builder实例  | 
5、子命令
命令  | 描述  | 
docker buildx bake  | 从文件构建  | 
docker buildx build  | 开始构建  | 
docker buildx create  | 创建一个新的builder实例  | 
docker buildx du  | 磁盘使用情况  | 
docker buildx imagetools  | 在registry中处理镜像的命令  | 
docker buildx inspect  | 查当前builder实例  | 
docker buildx ls  | 列出 builder 实现  | 
docker buildx prune  | 移除构建缓存  | 
docker buildx rm  | 删除 builder 实现  | 
docker buildx stop  | 停止 builder 实现  | 
docker buildx use  | 设置当前 builder 实例  | 
docker buildx version  | 显示buildx版本信息  | 
参考文档:https://docs.docker.com/engine/reference/commandline/buildx/