我在我的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'
8条答案
按热度按时间u5rb5r591#
感谢Tarun Lalwan的链接,并根据Joyce Babu的帖子,有一个来自gitlab runner repos的未记录选项在
[runners.docker] section
中因此,我必须在
config.toml
中使用我的网络名称设置此选项,如或当从命令行创建runner时
brccelvz2#
我知道这个线程是旧的,但我看到到处线程指向这一个,但没有解决我。
我收到了相同的错误消息:
致命错误:无法访问“”gitlab.maison.fr:无法解析主机:gitlab.maison.fr
将network_mode =“host”添加到config.toml中可解决此问题。
我的本地专用网络上的配置如下:
lrpiutwd3#
这是为我工作没有定义网络在docker组成。只是添加一个额外的_hosts记录在gitlab-runner配置就像我们添加一个记录在其他操作系统。
/etc/配置文件/配置文件
https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnersdocker-section
xv8emn3q4#
以防这对其他人寻找这个有帮助。
同样的问题,但GitLab和GitLab Runner在局域网中的不同机器上运行。DNS工作正常,
ping gitlab
工作正常,除了dockers内部:重现问题:
但可与DNS配合使用,前提是:
为Docker配置实际LAN DNS。
在GitLab Runner上编辑
/etc/docker/daemon.json
(文件还不存在),内容为:再次测试,现在OK:
如果这不是应该做的,我很乐意听到。
如果这个问题一开始就不应该存在的话,我也很乐意听到。我很惊讶在网上没有找到很多关于GitLab Runner这个问题的参考资料。
qnakjoqk5#
正如我所看到的,你已经定义了一个网络,这意味着
gitlab
和gitlab-runner
都在同一个网络中。你可以通过使用docker inspect
来验证这一点。所以你需要删除links
,因为你不需要它。要设置网络别名,您需要将
gitlab
服务的网络部分更改为以下内容:参考文献:
dgjrabp26#
我有这个问题这些天,在尝试了各种线程的所有建议的解决方案后,我用以下方式解决了它:
得益于My docker container has no internet
dphi5xsq7#
从网络Angular 看,容器就像一个独立的服务器,拥有自己的ip地址、网络路由和DNS解析。唯一的例外是在主机网络上运行容器。
也就是说,您可能需要弄清楚DNS解析是如何为主机工作的(也许您在/etc/hosts中添加了一些内容?),然后在容器中做同样的事情。
或者使用异常并在主机网络上运行。
vxqlmq5t8#
对于任何试图在一个有自己的dns设置的专用网络中使用docker执行器部署runner的人(即拥有自己的dns服务器),我尝试了上述解决方案,在
config.toml
中指定docker网络,但它不起作用。即使我可以gitlab.com从主机和runner容器解析www.example.com,我仍然得到上面提到的错误。所以作业容器不能'最后,对我有用的是: