如何在docker-compose中启用BuildKit?

73

在执行 docker-compose build 命令之前,我尝试了 export DOCKER_BUILDKIT=1,但并未看到预期的 BuildKit 输出。我错过了什么吗?

3个回答

106

docker-compose 1.25.0 中刚刚发布了对BuildKit的支持。启用方法如下:

export DOCKER_BUILDKIT=1 # or configure in daemon.json
export COMPOSE_DOCKER_CLI_BUILD=1

通过在您的shell中设置这些变量,您现在可以使用BuildKit运行docker-compose build

在Windows中,您可以在控制台中执行:

setx DOCKER_BUILDKIT 1 # or configure in daemon.json
setx COMPOSE_DOCKER_CLI_BUILD 1

之后需要重新启动控制台


2
这仍然是正确的答案吗?这与 docker composedocker-compose 有何关联? - Andy Ray
1
这在使用sudo时无效。我如何全局设置COMPOSE_DOCKER_CLI_BUILD而不是环境变量? - Neal
@AndyRay 如果我没记错的话,docker compose(没有连字符)是Docker开发的一种插件,用于解决“如何在AWS的ECS上部署由docker-compose文件准备的结构”的问题,而亚马逊则认为“docker-compose是开发环境的实现细节,我们不会提供支持。我们有ECS CLI(或者最新的Copilot)”。 - Hiro
3
这非常不方便,很遗憾我们不能通过yml文件来管理它。 - Alexander Goryushkin

32
您可以使用此命令告诉 docker-compose 在执行构建时使用 Docker CLI
COMPOSE_DOCKER_CLI_BUILD=1 docker-compose build

你应该看到与平常相同的构建,但是会出现以下警告:

警告:本地构建是一个实验性功能,并且随时可能会更改

你可以像这样对CLI进行参数化,以使用BuildKit而不是默认构建器:

COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build

Windows版本:

set "COMPOSE_DOCKER_CLI_BUILD=1" & set "DOCKER_BUILDKIT=1" & docker-compose build

您还可以全局启用BuildKit,编辑/etc/docker/daemon.json文件,添加:

{ "features": { "buildkit": true } }

获取更多信息请访问:https://docs.docker.com/develop/develop-images/build_enhancements/


7

Docker Compose v2默认支持BuildKit: 链接

虽然大多数迁移应该是直接的,但Compose v2确实引入了一些破坏性更改,可能会影响特定的用例:

  • 容器现在使用连字符而不是下划线创建其名称。
  • docker compose build 默认使用BuildKit构建镜像。
  • 已删除一些弃用的命令标志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接