如何分配主机名到Docker容器?
我在Windows上运行Docker(不是本地版本,即通过docker-machine
在VM上运行的版本)。
目前我有这样的访问网站:
192.168.99.100:8080 for website 1 192.168.99.100:8081 for website 2 192.168.99.100:8082 for website 3
这显然是一个真正的痛苦。
我希望能够做到这一点,我用Apache虚拟主机,我修改hosts
文件,然后可以只是input类似的东西: website1.dev
。
我如何做到这一点的Docker容器?
我的第一个解决scheme是简单地将以下内容附加到Windows机器上的hosts文件中,如下所示:
192.168.99.100 docker.dev
然而, docker.dev
只会转发到192.168.99.100:80
(即网站1),因为你不能把端口放在主机文件上。
192.168.99.100是docker-machine的IP地址:为这个IP分配一个名字,你需要自己修改Windows hosts文件 。
那假设docker机VM的IP已经被修复了: 在这个答案中看到我的脚本 。
要实际redirect到虚拟机中的正确的Apache服务器,您需要另一个容器,它将:
- 侦听端口80默认情况下
-
分析url和proxy-pass(redirect)到正确的实际url:port。
http://website1.dev => redirect to port 8080 http://website2.dev => redirect to port 8081 http://website3.dev => redirect to port 8082
(与网站website1.dev
, website2.dev
和website3.dev
都添加在Windows主机文件,具有相同的url192.168.99.100)
例如,检查traefik
这与其他容器所看到的容器的主机名不同。
docker-compose extra-host
确实等同于docker run --add-host
但是docker-compose可以使用hostname:
直接将主机名修复到容器。
这应该足以通过其名称来引用每个容器。