Docker - 主机上的代理容器端口

时间:2015-09-16 18:13:07

标签: docker vagrant

我的Windows机器上运行了一个Ubuntu VM(我正在使用Vagrant和VirtualBox)。我在VM中运行两个docker容器,一个是DB,另一个是Web服务器。我想通过主机代理Web容器,以便我可以从Windows机器上浏览Web容器。

docker是否对此有所帮助,还是我需要在VM上使用HAProxy之类的东西?

1 个答案:

答案 0 :(得分:3)

有不同的方法来实现这一目标。

让我们假设您在Docker主机上运行了以下容器:

docker run -d -p 80:80 tutum/hello-world

-p选项告诉Docker在Docker主机上打开端口80并将流量转发到Docker容器的端口80

通过为您的Vagrant框分配静态IP

Vagrantfile 中,您可以通过添加以下内容为Vagrant框分配固定IP:

config.vm.network "private_network", ip: "176.16.0.3"

然后从Windows中打开http://176.16.0.3/

通过转发Vagrant框中的端口

如果您不想为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网络接口,而不仅仅是localhost127.0.0.1