在docker中添加主机重定向

时间:2015-12-12 17:11:50

标签: docker gitlab-ci

我在虚拟机中使用gitlab。我将使用gitlab-ci(在同一个VM中)和docker。

要访问我的gitlab,我使用域git.local(在我的计算机上重定向到我的VM,重定向到我的VM中的127.0.0.1)。

当我启动测试时,测试返回:

  

致命:无法访问' http://gitlab-ci-token:xxxxxx@git.local/thib3113/ESCF.git/':无法解析主机' git.local'

所以我的问题是:如何将git.local的重定向添加到容器IP?我看到了arg -h <host>的docker,但我不知道如何告诉gitlab使用这个参数。或者也许是告诉docker使用容器dns的配置?

我看到了这一点:How do I get a Docker Gitlab CI runner to access Git on its parent host? 但同样的问题,我不知道如何添加参数:/。

2 个答案:

答案 0 :(得分:16)

根据GitLab CI Runner Advanced configuration,您可以尝试使用GitLab CI运行中的extra_hosts参数。 在/etc/gitlab-runner/config.toml

[[runners]]
  url = "http://localhost/ci"
  token = "TOKEN"
  name = "my_runner"
  executor = "docker"
  [runners.docker]
    host = "tcp://<DOCKER_DAEMON_IP>:2375"
    image = "..."
    ...
    extra_hosts = ["localhost:192.168.0.39"]

使用此示例,当运行测试git的容器内部将尝试从 localhost 克隆时,它将使用192.168.0.39作为此主机名的IP。

答案 1 :(得分:0)

如果要在docker中使用dns,请使用dns-gen遵循以下简单步骤,您可以将主机名分配给多个docker容器。 1.通过发布此命令首先了解您的Docker IP

.client

  1. 现在记下输出ip和启动dns-gen容器的时间(ps:不要忘了通过在:53:53之前发出上述命令来添加您获得的docker ip)

/sbin/ifconfig docker0 | grep "inet" | head -n1 | awk '{ print $2}' | cut -d: -f2

  1. 最后一件事:在您的resolv.conf中注册新的DnsServer

docker run --detach \ --name dns-gen \ --publish dockerip:53:53/udp \ --volume /var/run/docker.sock:/var/run/docker.sock \ jderusse/dns-gen echo "nameserver dockerip" | sudo tee --append /etc/resolvconf/resolv.conf.d/head

现在您应该可以在浏览器中访问docker容器了:-http://containername.docker

希望它能工作..谢谢。

sudo resolvconf -u