将主机指向具有静态域名的Docker容器

时间:2017-07-23 19:02:18

标签: docker dns docker-compose

我在Docker容器中设置了一个Web服务,它只响应对http://pouac.localhost发出的HTTP请求。

所以,目前,当我想测试这个Docker容器时,我必须手动将该容器的IP地址添加到主机的/etc/hosts文件中。这个IP地址从一次运行变为另一次运行,因此我需要每次都使用:

docker inspect mycontainer

...然后将其添加到/etc/hosts

它有效,但这真的很痛苦。我非常确定有更好的方法来做到这一点。

如果我理解正确,Docker includes a DNS server。所以我想我可以尝试将主机指向Docker DNS,这将是一个开始......但我不知道在哪个地址运行Docker DNS。

有关信息,主机正在运行Ubuntu 16.04,而Docker容器以docker-compose启动。

3 个答案:

答案 0 :(得分:1)

听起来这个docker容器会响应端口80上的请求。因此,您希望使用docker中相应服务的ports部分将计算机上的某个端口映射到docker容器上的端口80。 compose.yml,就像在this question

中谈到的那样

答案 1 :(得分:1)

首先,在/ etc / hosts结尾处添加以下行:

127.0.0.1 pouac.localhost

其次,公开容器的TCP端口80。 要完成此操作,请在docker-compose.yml文件中添加类似的内容:

ports:
    - "80:80"

然后,TCP端口80将针对主机的每个IP地址公开,因此它将暴露给127.0.0.1上的TCP端口80,因此连接到http://pouac.localhost将连接到您的容器。

答案 2 :(得分:0)

您可以在运行docker容器时尝试--add-host标记 示例

docker run --add-host=google.com:8.8.8.8 -td <image_name>

主机映射将附加到容器的/ etc / hosts。

示例

docker run --rm \
--hostname mycontainer \
--add-host docker.com:127.0.0.1 \
--add-host test:10.10.10.2 \
alpine:latest \
cat /etc/hosts

输出

172.17.0.45 mycontainer
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.10.10.2 test
127.0.0.1 docker.com