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/