我的Windows机器上运行了一个Ubuntu VM(我正在使用Vagrant和VirtualBox)。我在VM中运行两个docker容器,一个是DB,另一个是Web服务器。我想通过主机代理Web容器,以便我可以从Windows机器上浏览Web容器。
docker是否对此有所帮助,还是我需要在VM上使用HAProxy之类的东西?
答案 0 :(得分:3)
有不同的方法来实现这一目标。
让我们假设您在Docker主机上运行了以下容器:
docker run -d -p 80:80 tutum/hello-world
-p
选项告诉Docker在Docker主机上打开端口80
并将流量转发到Docker容器的端口80
。
在 Vagrantfile 中,您可以通过添加以下内容为Vagrant框分配固定IP:
config.vm.network "private_network", ip: "176.16.0.3"
然后从Windows中打开http://176.16.0.3/
如果您不想为Vagrant框分配固定的IP地址,则可以将端口80从Ubuntu框转发到Vagrant主机的端口80(Windows机器)。
在 Vagrantfile 中,输入
config.vm.network "forwarded_port", guest: 80, host: 80
现在,您可以在Windows计算机上通过http://localhost/访问网络服务器。
请注意,在您的Docker容器中,您的网络服务器必须接受来自外部的连接。换句话说,您需要绑定到特殊的0.0.0.0
网络接口,而不仅仅是localhost
或127.0.0.1
。