我如何获得一个Docker Gitlab CI运行器来访问其父主机上的Git?
Gitlab在我们的内部networkinghttp://gitlab上设置
在同一台机器上的Docker容器无法连接到它。
如何configurationdocker,以便它知道gitlab是它的父类?
当Gitlab CI尝试运行一个构build(在一个Docker容器内)时,这个问题展现出来了:
克隆到'/ builds / ns / project'…致命:无法访问' http:// gitlab-ci-token:xxxxxx@gitlab/ns/project.git/ ':无法parsing主机'gitlab'
我尝试添加networking的DNS服务器到/etc/default/docker
DOCKER_OPTS
中的DOCKER_OPTS
无济于事。
根据GitLab CI Runner高级configuration ,您可以尝试在GitLab CI运行器中使用extra_hosts
参数。 在/etc/gitlab-runner/config.toml
:
[[runners]] url = "http://gitlab/ci" token = "TOKEN" name = "my_runner" executor = "docker" [runners.docker] host = "tcp://<DOCKER_DAEMON_IP>:2375" image = "..." ... extra_hosts = ["gitlab:192.168.0.39"]
用这个例子,当运行git的容器内部的git会尝试从gitlab克隆时,它将使用192.168.0.39
作为这个主机名的IP。
您可以使用--dns
标志将容器dnsconfiguration为--dns
docker run
( https://docs.docker.com/engine/reference/run/#network-settings ),但默认情况下它应该使用主机dns。
如果您的Gitlab安装也作为Docker容器运行,只需将gitlab-runner链接到gitlab容器即可:
docker run -d --name gitlab-runner --restart always --link gitlab \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest
这样,Docker负责在gitlab-runner中提供主机“gitlab”。
- 如何将Vagrantfile转换为Dockerfile
- 删除容器后,清理自定义名称空间内容的正确方法是什么?
- 限制Docker组中的用户不运行特权容器
- debugging远程主机上的Docker容器上运行的NodeJs应用程序的最佳方式是什么?
- 参考Zeppelin到Spark Master(在Docker容器中)
- “解决IP失败”; joindockerized serf代理时,bash脚本中的“查找错误”
- 用于运行meteor应用程序的dockerfile – 使用节点:7.5.0-alpine
- docker文件中的docker组成,群集和IP地址
- 从数据streamDocker GO SDK解码JSON