适用于Windows的Docker:使用相同的端口号本地化多个Docker容器

我正在使用Docker for Windows(使用Hyper-V,而不是Docker Toolkit for Windows)。 我想完成的是旋转3 +docker集装箱,与相同的端口集可用。

在创build第一个Docker容器之后,我有了http:// docker:8091 (或http://10.0.75.2:8091 ),这很好。 现在,我想要做的是旋转另一个具有相同端口号的容器。 所以,像http:// docker2:8091或http://10.0.75.3:8091 )。 然后在docker3或* .4:8091。

(请注意,将三个容器与暴露的端口重新分配给其他一些随机端口是一样的,但我希望保留端口号)。

我已经尝试通过Hyper-Vpipe理器向MobyLinuxVM添加networking适配器,但似乎打破了Docker,我必须重新安装才能使其重新工作。

我试图用docker-machine create -d hyperv --hyperv-virtual-switdch DockerNAT AnotherBox -machine( docker-machine create -d hyperv --hyperv-virtual-switdch DockerNAT AnotherBox )启动另一个Hyper-V实例,但是这只是locking了一半,并不起作用。 (根据我在论坛上阅读的内容,Docker for Windows上的docker-machine的意图不是我能够做到的,只是用于pipe理云中的VM)。

所以…有什么办法来完成我想要做的?

为了发布端口,docker使用二进制docker-proxy将其转发到容器中,如下所示:

 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091 

显然它绑定到这个例子中的所有接口,但我认为它可以绑定到特定的接口。

假设你的主机上有3个接口,并且有相应的DNSlogging,那么可以这样做:

 docker-proxy -proto tcp -host-ip 10.0.75.2 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091 docker-proxy -proto tcp -host-ip 10.0.75.3 -host-port 8091 -container-ip 172.17.0.3 -container-port 8091 docker-proxy -proto tcp -host-ip 10.0.75.4 -host-port 8091 -container-ip 172.17.0.4 -container-port 8091 

是的,有一种方法,通过使用反向代理。 您可以在容器内使用Nginx或HAProxy,或者更简单一些,您可以使用Nginx自动重新configuration自己的图像来反向代理您的容器: https : //hub.docker.com/r/jwilder/nginx-proxy/ 。