Докер Gitlab Runner Не удалось разрешить хост - PullRequest
0 голосов
/ 14 мая 2018

Я использую 2 контейнера в моей ОС Ubuntu: Gitlab-ce и gitlab-runner

Имена контейнеров: gitlab_gitlab_1 и gitlab_gitlab-runner_1

Я получаю доступ к своему приложению gitlab через gitlab.localhost.com:801

Я успешно зарегистрировал участника с помощью этой команды:

docker exec -it gitlab_gitlab-runner_1 gitlab-runner register --non-interactive --url http://gitlab_gitlab_1 --registration-token _wgMgEx3nBocYQtoi83c --executor docker --docker-image alpine:latest

Затем, когда я запускаю задание, я получил это сообщение об ошибке:

Running with gitlab-runner 10.7.1 (b9bba623)
  on 589a617ee407 12ba77f7
Using Docker executor with image alpine:latest ...
Pulling docker image alpine:latest ...
Using docker image sha256:3fd9065eaf02feaf94d68376da52541925650b81698c53c6824d92ff63f98353 for alpine:latest ...
Running on runner-12ba77f7-project-1-concurrent-0 via 01196621a827...
Cloning repository...
Cloning into '/builds/root/test'...
fatal: unable to access 'http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.localhost.com/root/test.git/': Could not resolve host: gitlab.localhost.com
ERROR: Job failed: exit code 1

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

Как я могу это исправить?

Спасибо

Редактировать 1

docker-compose.yml

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab.localhost.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.localhost.com'
    ports:
      - '801:80'
      - '443:443'
      - '22:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
    networks:
      - 'default'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    depends_on:
      - 'gitlab'
    restart: always
    volumes:
      - '/srv/gitlab-runner/config:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    networks:
      - 'default'
    links:
      - 'gitlab:gitlab.localhost.com'

networks:
  default:
    driver: 'bridge'

Редактировать 2

docker-compose.yml

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab.localhost.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.localhost.com'
    ports:
      - '801:80'
      - '443:443'
      - '22:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
    networks:
      default:
        aliases:
          - 'gitlab.localhost.com'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    depends_on:
      - 'gitlab'
    restart: always
    volumes:
      - '/srv/gitlab-runner/config:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    networks:
      - 'default'

networks:
  default:
    driver: 'bridge'

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Благодаря связи Таруна Лалвана и, согласно сообщению Джойса Бабу, в репозиториях бегуна gitlab [runners.docker] section 1004 *

есть недокументированный вариант, поэтому я должен установитьэта опция с моим сетевым именем в config.toml как

[[runners]]
  ...
  [runners.docker]
    ...
    network_mode = "gitlab_default"

ИЛИ при создании бегуна из командной строки

docker exec -it gitlab_gitlab-runner_1 gitlab-runner register \
--non-interactive \
--url http://gitlab_gitlab_1 \
--registration-token _wgMgEx3nBocYQtoi83c \
--executor docker \
--docker-image alpine:latest \
--docker-network-mode gitlab_default
0 голосов
/ 30 октября 2018

В случае, если это поможет другим, ищущим это ..

Та же проблема, но GitLab и GitLab Runner работают на разных машинах в локальной сети. DNS работает и ping gitlab работает, кроме внутри докеров:

Воспроизвести проблему:

$ sudo docker run -it alpine ping gitlab
ping: bad address 'gitlab'
^C

Но работает с DNS, учитывая:

$ sudo docker run -it --dns=172.168.0.1 alpine ping gitlab
PING gitlab (172.168.0.5): 56 data bytes
64 bytes from 172.168.0.5: seq=0 ttl=63 time=0.536 ms
^C

Конфигурирование фактического DNS DNS для докера.

Редактировать /etc/docker/daemon.json в GitLab Runner (файл еще не существует) с содержанием:

{
    "dns": ["172.168.0.1", "1.1.1.1"]
}

Проверьте снова, теперь все в порядке:

$ sudo docker run -it --dns=172.168.0.1 alpine ping gitlab
PING gitlab (172.168.0.5): 56 data bytes
64 bytes from 172.168.0.5: seq=0 ttl=63 time=0.455 ms
64 bytes from 172.168.0.5: seq=1 ttl=63 time=0.905 ms
^C

Если это не так, как должно быть, я был бы рад услышать.
Если бы эта проблема вообще не существовала, я тоже был бы рад услышать. Я был удивлен, что не нашел в Интернете много ссылок на эту проблему для GitLab Runner ..

0 голосов
/ 14 мая 2018

Как я вижу, вы уже определили сеть, что означает, что и gitlab, и gitlab-runner находятся в одной сети.Вы можете проверить это с помощью docker inspect.поэтому вам нужно удалить links, так как вам это не нужно.

Чтобы установить сетевой псевдоним, вам нужно изменить сетевую часть на gitlab на следующую:

gitlab:
  ...
  networks:
    default:
      aliases:
        - gitlab.localhost.com

Ссылки:

...