Gitlab CI возвращает ошибку — нет такой ошибки хоста

#docker #continuous-integration #gitlab

#docker #непрерывная интеграция #gitlab

Вопрос:

Мой gitlab-ci запускается только после нескольких попыток повторов. Он почти все время возвращает следующую ошибку —

Успешно установлен PyYAML-3.13 awscli-1.16.133 botocore-1.12.123 colorama-0.3.9 docutils-0.14 futures-3.2.0 jmespath-0.9.4 pyasn1-0.4.5 python-dateutil-2.8.0 rsa-3.4.2 s3transfer-0.2.0 six-1.12.0 urllib3-1.24.1

Вы используете pip версии 10.0.1, однако доступна версия 19.0.3.

Вам следует рассмотреть возможность обновления с помощью команды ‘pip install —обновить pip’.

$ $(aws ecr get-login -no-include-email -region us-east-1)

ВНИМАНИЕ! Использование —password через CLI небезопасно. Используйте —password-stdin.

ошибка при подключении: Posthttp://docker:2375/v1.39/auth : наберите tcp: lookup docker на [ip здесь]:53: такого хоста нет

ОШИБКА: Сбой задания: команда завершается кодом выхода 1

Иногда я сталкивался с этой ошибкой после выполнения команды docker build:

time =»2019-03-28T18:20:24Z» level= сообщение об ошибке =»не удалось набрать gRPC: не удается подключиться к демону Docker. Запущен ли ‘docker daemon’ на этом хосте?: наберите tcp: lookup docker 10.19.240.10:53: контекст такого хоста не отменен

Однако после нескольких попыток (много) CI запускается успешно и создает образ docker и т.д.

Это мой файл yaml (включая место, где он останавливается):

 image: docker:stable
variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

before_script:
  - apk add --no-cache curl jq python py-pip sed git curl-dev bash git
  - pip install awscli

stages:
  - build
  - deploy_staging
  - deploy_production
  

Я искал некоторые возможные решения, но пока не повезло.
Спасибо

Ответ №1:

В случае, если у кого-либо возникнет эта проблема, когда ваши программы-исполнители внезапно продолжают выходить из строя, простая очистка кэша в меню конвейера решит эту проблему.

Вы должны быть сопровождающим проекта, чтобы иметь возможность это делать.

Ответ №2:

Удалите указанную ниже переменную из Dockerfile

DOCKER_HOST: tcp://docker:2375/

и

Отредактируйте config.toml расположение файла по умолчанию /etc/gitlab-runner/config.toml и измените замените приведенную ниже строку в существующей записи тома

volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

Ответ №3:

Другая причина, по которой это могло произойти, заключается в том, что контейнеру DinD не разрешено запускаться в привилегированном (root) режиме. Это означает, что он не может запустить контейнер docker-in-docker, что приводит к сбою команд docker. Подробнее об этом на https://docs.gitlab.com/runner/executors/docker.html#the-privileged-mode