【发布时间】:2018-10-23 20:31:01
【问题描述】:
我在我的 Ubuntu 操作系统上使用 2 个容器:Gitlab-ce 和 gitlab-runner
容器名称为:gitlab_gitlab_1 和 gitlab_gitlab-runner_1
我通过 gitlab.localhost.com:801 访问我的 gitlab 应用程序
我用这个命令成功注册了一个跑步者:
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'
【问题讨论】:
-
您是否尝试过为这些容器创建一个 docker 网络,以便将它们链接在一起?
-
是的,我还使用默认网桥驱动程序创建了一个用户定义的网络。所以他们在同一个网络中。
-
在这种情况下,您可以使用服务名称在 docker 中访问它,我假设它是“gitlab”,您可以像这样访问它:gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab/root/test.git,或者您可以为它定义一个网络别名或者也使用这个 gitlab_gitlab_1
-
我如何指定这个?我已经使用容器名称gitlab_gitlab_1注册了跑步者,没有用。
标签: docker gitlab-ci gitlab-ci-runner