繁体   English   中英

将 Docker buildx 构建器从主机“挂载”到容器

[英]"Mount" a Docker buildx builder from host to container

(如何)我可以将 Docker buildx 构建器从主机“挂载”到容器吗?

我在主机系统(CentOS Stream 8)上有一个 Docker buildx builder foo

[root@myhost ~]# docker buildx inspect --bootstrap
[+] Building 1.4s (1/1) FINISHED                                                                                                                                      
 => [internal] booting buildkit                                                                                                                                  1.4s
 => => starting container buildx_buildkit_foo0                                                                                                                 1.4s
Name:   foo
Driver: docker-container

Nodes:
Name:    foo0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/amd64, linux/amd64/v2, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

如何使这个构建器可用于我在主机上启动的 Docker 容器?

语境

我想在 GitLab CI 容器中构建多架构图像。 这已经很好了,但前提是我在容器内创建了 buildx builder ad-hoc,即docker buildx create --use 如果 CI 容器在其执行的作业完成时死掉,这个一次性构建器就会死掉。

问题是 Docker 构建缓存与构建器相关联。 因此,容器内的临时构建器总是以空缓存开始。 如果我可以从容器内的主机中使用 buildx 构建器,我将获得有效的缓存。

.docker/buildx目录挂载到容器中似乎就足够了。 然后容器内的 buildx 操作将使用主机的构建器缓存。

例子

docker run --rm -ti -v /home/myuser/.docker/buildx:/root/.docker/buildx -v /var/run/docker.sock:/var/run/docker.sock docker sh

在容器内部,您可以通过两种方式使用主机上定义的构建器foo

  • docker buildx use foo将其设置为默认构建器
  • docker buildx build --builder foo ...为单个操作显式设置它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM