#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