Gitlab runner, использующий dind, приводит к неправильной работе сервера ошибок - PullRequest
0 голосов
/ 24 февраля 2020

Я пытался настроить docker и запустить его в gitlab-runner, но продолжаю получать ошибки, такие как ошибка ниже или Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

.gitlab-ci.yml

build:
  stage: build
  image: docker:latest
  services:
  - name: docker:dind
    alias: docker
    entrypoint: ["env", "-u", "DOCKER_HOST"]
    command: ["dockerd-entrypoint.sh"]
  variables:
    DOCKER_HOST: tcp://docker:2375/
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""
  script:
    - docker info

результаты:

$ docker info
Client:
 Debug Mode: false

Server:
ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 10.233.0.3:53: server misbehaving
errors pretty printing info

Участник не в привилегированном режиме , Есть ли способ построить образ docker в бегуне без привилегированного режима?

А если нет, есть ли другие практики и какие важные минусы приносит этот флаг?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Не удалось заставить работать dind, поэтому я наткнулся на инструмент kaniko и сумел создать образ pu sh для него в хранилище gitlab и использовать его в других заданиях в этом конвейере.

Сокращенное определение этого задания в gitlab-ci.yml :

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE

Документация Gitlab .

0 голосов
/ 24 февраля 2020

Вы пытаетесь запустить docker команду docker info внутри вашего скрипта, которая вызывает проблему. У вас правильный образ, но вы не запустили демон docker в script до вызова docker info.

Если ваша цель - запустить экземпляр docker внутри вашей сборки и запустить несколько автоматизированное тестирование, вам нужно запустить (возможно настроить) демон docker в части сценария gitlab ci.

Если ваша цель - развернуть контейнер docker на целевом сервере, тогда вам следует только создайте образ docker в gitlab ci и разверните образ через s sh на своем удаленном сервере из вашего конвейера.

...