gpt4 book ai didi

docker - 在 GitLab CI 中使用带有已安装 `/var/run/docker.sock` 的 BuildKit

转载 作者:行者123 更新时间:2023-12-02 19:46:12 27 4
gpt4 key购买 nike

我有一个注册的 gitlab-runner 和一个 docker 执行器。当它运行这个 .gitlab-ci.yml 时:

image: docker:latest

variables:
DOCKER_BUILDKIT: "1"

build:
stage: build
script:
# There are additional flags cut out requiring BuildKit.
- docker build .

/var/run/docker.sock 挂载,它失败了:

ERROR: docker.io/docker/dockerfile:experimental not found
------
> resolve image config for docker.io/docker/dockerfile:experimental:
------
failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: docker.io/docker/dockerfile:experimental not found

当我包含

services:
- docker:dind

.gitlab-ci.yml 并删除 /var/run/docker.sock 挂载(因此将守护进程更改为子容器的而不是主机的),它成功了。

这是 Dockerfile:

# syntax=docker/dockerfile:experimental
...

是否与 BuildKit/实验语法和使用主机的 docker 套接字不兼容?我让它通过 dind 使用自己的套接字与子容器一起工作,但我希望通过安装套接字来成功。

最佳答案

按照 BuildKit mode fails to fetch the frontend image when registry-mirrors is specified 中的解决方案,我能够使它正常工作.问题是我的 gitlab-runner 没有注册表镜像,但在执行作业之前执行以下操作就可以了:

docker pull docker/dockerfile:experimental 

# Replace with whatever image `Dockerfile` is based on.
docker pull ubuntu:latest

仍然不清楚为什么这个问题与 registry-mirrors 相关,并且由相同的东西修复,但现在它可以完成工作。

关于docker - 在 GitLab CI 中使用带有已安装 `/var/run/docker.sock` 的 BuildKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63214561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com