在 docker 中添加主机重定向
Posted
技术标签:
【中文标题】在 docker 中添加主机重定向【英文标题】:add hosts redirection in docker 【发布时间】:2016-03-18 11:50:41 【问题描述】:我在虚拟机中使用 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 ?我看到了 docker 的 arg -h <host>
,但我不知道如何告诉 gitlab 使用这个参数。或者可能是告诉 docker 使用容器 dns 的配置?
我看到了这个:How do I get a Docker Gitlab CI runner to access Git on its parent host? 但同样的问题,我不知道如何添加参数:/。
【问题讨论】:
How do I get a Docker Gitlab CI runner to access Git on its parent host?的可能重复 【参考方案1】:根据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。
【讨论】:
【参考方案2】:如果您想在 docker 中使用 dns,请使用 dns-gen 按照这些简单的步骤操作,您可以将主机名分配给多个 docker 容器。 1.首先通过发布这个命令知道你的docker IP
/sbin/ifconfig docker0 | grep "inet" | head -n1 | awk ' print $2' | cut -d: -f2
-
现在记下输出 ip 和启动 dns-gen 容器的时间(ps:不要忘记添加您在 :53:53 之前发出上述命令获得的 docker ip)
docker run --detach \
--name dns-gen \
--publish dockerip:53:53/udp \
--volume /var/run/docker.sock:/var/run/docker.sock \
jderusse/dns-gen
-
最后一件事:在 resolv.conf 中注册新的 DnsServer
echo "nameserver dockerip" | sudo tee --append /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
现在您应该可以在浏览器中访问您的 docker 容器了:- http://containername.docker
希望它有效..谢谢..
Shubhankit
【讨论】:
以上是关于在 docker 中添加主机重定向的主要内容,如果未能解决你的问题,请参考以下文章