GitLab-CI: невозможно связать с не работающим контейнером
Я пытался настроить мою работу с gitlab-ci. У меня есть простой файл gitlab-ci.yml
build_ubuntu:
image: ubuntu:14.04
services:
- rikorose/gcc-cmake:gcc-5
stage: build
script:
- apt-get update
- apt-get install -y python3 build-essential curl
- cmake --version
tags:
- linux
Я хочу получить Ubuntu 14.04 LTS с установленными gcc и cmake (версия apt-get является старой). Если я использую его локально (с помощью команды docker --link), все работает, но когда gitlab-ci-runner будет обрабатывать его, я получаю следующее предупреждение (что в моем случае является ошибкой)
Running with gitlab-ci-multi-runner 9.2.0 (adfc387)
on xubuntuci1 (19c6d3ce)
Using Docker executor with image ubuntu:14.04 ...
Starting service rikorose/gcc-cmake:gcc-5 ...
Pulling docker image rikorose/gcc-cmake:gcc-5 ...
Using docker image rikorose/gcc-cmake:gcc-5
ID=sha256:ef2ac00b36e638897a2046c954e89ea953cfd5c257bf60103e32880e88299608
for rikorose/gcc-cmake service...
Waiting for services to be up and running...
*** WARNING: Service runner-19c6d3ce-project-54-concurrent-0-rikorose__gcc-
cmake probably didn't start properly.
Error response from daemon: Cannot link to a non running container: /runner-
19c6d3ce-project-54-concurrent-0-rikorose__gcc-cmake AS /runner-19c6d3ce-
project-54-concurrent-0-rikorose__gcc-cmake-wait-for-service/runner-
19c6d3ce-project-54-concurrent-0-rikorose__gcc-cmake
Кто-нибудь знает, как я могу это исправить?
Заранее спасибо Тонка
3 ответа
Вы должны запустить контейнер gitlab-runner с
--privileged true
Но этого недостаточно. Любые контейнеры бегунов, которые запускаются gitlab после регистрации, также должны быть привилегированными. Так что вам нужно смонтировать gitlab-бегун
docker exec -it runner /bin/bash
nano /etc/gitlab-runner/config.toml
и измените привилегированный флаг с ложного на истинный:
privileged = true
Это решит проблему!
В моем случае мне пришлось добавить
variables:
DOCKER_TLS_CERTDIR: ""
Хотя моя конфигурация CI отличается и служит другой цели, я столкнулся с аналогичной проблемой, которая в основном приводит к тому же сообщению об ошибке, относящемуся к попытке связать какой-то неработающий контейнер.
Соответствующий бегун работаетprivileged
годами. Однако услуга, используемая в конкретном проекте.gitlab-ci.yml
файл был довольно устаревшим. Оно включало в себя следующее определение:
services:
- docker:18.09-dind
Docker на хосте уже имел версию v23.x, поэтому соответствующее изменение этого определения исправило это для меня:
services:
- docker:23-dind