[英]"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.