1. 问题呈现
在使用 Dockerfile 和 docker build 指令构建自定义镜像时遇到 Docker 给出的警告信息(对 Dockfile 不了解的同学,可以参考我的另一篇博文:Dockerfile详解(Dockerfile的基本结构、使用Dockerfile自定义镜像示例、主流编程语言和中间件的基础Docker镜像、编写Dockerfile的最佳实践))
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
2. 问题产生的原因
这个警告信息表明 Docker 正在使用传统的构建器(legacy builder),而传统的构建起将在未来的版本中被弃用
Docker 推荐使用 BuildKit,这是一个更现代、更高效的构建系统,用于构建 Docker 镜像
3. 解决方法
虽然说这个警告信息不影响我们正常构建镜像,但是秉承着有问题就解决的原则,我们尝试解决这个问题
3.1 方法一:启用Docker buildx插件
确保 Docker 版本支持 buildx(Docker 19.03 或更高版本支持 buildx)
buildx 通常作为 Docker CLI 的一个插件随 Docker 一起提供
如果使用的是 Docker 20.10 或更高版本,buildx
已经包含在 Docker CLI 中,可能需要手动启用
修改 /etc/docker/daemon.json
文件
sudo vim daemon.json
向文件中添加以下内容
"experimental": true
保存文件后重启 Docker 服务
sudo systemctl restart docker
最后查看 buildx
插件是否已正确安装
sudo docker buildx version
安装完 BuildKit 后,可以使用 buildx 插件构建 Docker 镜像,也可以使用传统的 docker build 命令,Docker 将不会再给出警告信息
sudo docker buildx build --tag ubuntu-python:1.0.0 ./
sudo docker build --tag ubuntu-python:1.0.0 ./
3.2 方法二:手动安装buildx插件
如果按照方法一操作之后使用 docker build 指令构建镜像时还是遇到 DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
警告信息,而使用 docker buildx build 指令构建镜像时遇到以下报错信息
docker: ‘buildx’ is not a docker command.
See ‘docker --help’
我们就需要手动安装 buildx
插件了
mkdir -p ~/.docker/cli-plugins/
# 下载 buildx 二进制文件
wget -O docker-buildx https://github.com/docker/buildx/releases/download/v0.20.1/buildx-v0.20.1.linux-amd64
# 赋予执行权限
chmod +x docker-buildx
# 移动到 ~/.docker/cli-plugins/ 路径下
sudo mv docker-buildx ~/.docker/cli-plugins/
运行以下指令查看 buildx
插件是否安装成功
sudo docker buildx version
下载 buildx 二进制文件是通过 GitHub 下载的,如果下载失败或者下载速度很慢,可以加速访问 GitHub,将文件下载到本地后再上传到 Linux 服务器上
加速访问 GitHub 可以参考我的另一篇博文:GitHub的使用技巧(加速访问GitHub、查看GitHub的热门项目、查看GitHub推荐的项目、Fork、Issue、快速找到项目的安装包、GitHub的各种快捷键)
docker-buildx 的下载地址:https://github.com/docker/buildx/releases/tag/v0.20.1
4. 使用BuildKit构建镜像
安装完 BuildKit 后,可以使用 buildx 插件构建 Docker 镜像,也可以使用传统的 docker build 命令,Docker 将不会再给出警告信息
sudo docker buildx build --tag ubuntu-python:1.0.0 ./
sudo docker build --tag ubuntu-python:1.0.0 ./