背景
idea连接docker进行构建x构建镜像时,报了错:
ERROR: BuildKit is enabled but the buildx component is missing or broken.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
然后执行
1 | docker buildx install |
报错:docker: ‘buildx’ is not a docker command
当 docker 报错 buildx is not a docker command 时,通常意味着你的 Docker CLI 没有安装或未正确配置 buildx 插件。以下是解决该问题的步骤:
- 检查 Docker 版本
docker-buildx 是 Docker 的扩展功能,要求 Docker 的版本是 19.03 或更高。
运行以下命令检查版本:
docker version
如果 Docker 版本过低,请升级到最新版本。
升级 Docker(Mac)
1. 打开 Docker 官方网站。
2. 下载并安装最新版本的 Docker Desktop。
3. 安装完成后,重启终端并运行:
docker version
- 检查 Buildx 是否已安装
docker-buildx 是一个 CLI 插件,通常在 Docker Desktop(Mac)中自带。如果没有安装或配置错误,可以通过以下方式安装。
验证 Buildx 是否已存在
运行以下命令:
docker buildx version
• 如果输出 Buildx 版本信息,则插件已经安装。
• 如果显示 docker: 'buildx' is not a docker command,请按照以下步骤安装。
- 安装 Buildx
手动安装 Buildx 插件
1. 创建插件目录:
mkdir -p ~/.docker/cli-plugins
2. 下载最新的 docker-buildx 二进制文件:
1 | ## Mac arm64 v0.19.3 其他版本架构可以从上面的链接获取 |
3. 赋予执行权限:
1 | chmod +x ~/.docker/cli-plugins/docker-buildx |
4. 验证安装:
1 | docker buildx version |
- 配置 Buildx
如果 Buildx 已安装,但还未配置 builder,需要初始化它。
1. 创建 Builder
1 | docker buildx create --name mybuilder --use |
2. 检查 Builder
1 | docker buildx ls |
如果看到类似以下内容,说明 Builder 配置成功:
1 | NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS |
3. 启动 Builder
1 | docker buildx inspect --bootstrap |
- 启用 BuildKit(可选)
Buildx 是基于 Docker BuildKit 的,需要确保 BuildKit 已启用。
启用 BuildKit
运行以下命令:
1 | export DOCKER_BUILDKIT=1 |
为了永久生效,可以将该环境变量写入 ~/.zshrc 或 ~/.bashrc:
1 | echo "export DOCKER_BUILDKIT=1" >> ~/.zshrc |
- 测试 Buildx
运行以下命令测试:
1 | docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --push . |
如果 Buildx 工作正常,你将能够构建多平台镜像。
- 常见问题及解决方法
问题 1:docker buildx 命令仍然不可用
• 确保插件安装在正确的位置:~/.docker/cli-plugins/。
• 确保文件权限正确:
1 | chmod +x ~/.docker/cli-plugins/docker-buildx |
问题 2:Docker CLI 没有识别插件
• 如果 CLI 未正确加载插件,请重启终端或重启 Docker Desktop。
• 检查环境变量是否设置:
1 | echo $PATH |
确保路径中包含 Docker 的安装目录(如 /usr/local/bin)。
问题 3:Builder 状态为 Inactive
• 运行以下命令启动 Builder:
1 | docker buildx inspect --bootstrap |