Использование 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 и исправляется тем же самым, но пока это работает.