Использование BuildKit с смонтированным `/ var / run / docker.sock` в GitLab CI

У меня есть зарегистрированный 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 mount (поэтому изменение демона на дочерний контейнер, а не на хост) выполняется успешно.

Здесь Dockerfile:

# syntax=docker/dockerfile:experimental
...

Есть ли несовместимость с синтаксисом BuildKit / эксперимент и использованием сокета докера хоста? У меня он работает с дочерним контейнером, используя собственный сокет черезdind, но я хочу, чтобы это удалось с установленным сокетом.

1 ответ

Я смог заставить это работать, следуя решению в режиме BuildKit, который не может получить изображение внешнего интерфейса, когдаregistry-mirrorsуказан. Дело в том, что на моем компьютере не было зеркал реестра.gitlab-runner, но выполнение следующих действий перед выполнением задания помогло:

docker pull docker/dockerfile:experimental 

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

Все еще в неведении относительно того, почему эта проблема связана с registry-mirrors one и исправляется тем же самым, но пока это работает.

Другие вопросы по тегам