Использование BuildKit с смонтированным `/ var / run / docker .sock` в GitLab CI - PullRequest
1 голос
/ 02 августа 2020

Имею зарегистрированный 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 / эксперимент и использованием сокета docker хоста? У меня он работает с дочерним контейнером, используя свой собственный сокет через dind, но я хочу, чтобы это было успешным с установленным сокетом.

1 Ответ

0 голосов
/ 02 августа 2020

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

docker pull docker/dockerfile:experimental 

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

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

...