我在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
启动。
答案 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