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

我有一台运行在我的Windows机器上的Ubuntu虚拟机(我使用Vagrant和VirtualBox)。 我在虚拟机中运行两个docker容器,一个是另一个数据库,另一个是web服务器。 我想通过主机代理Web容器,以便可以从Windows机器浏览Web容器。

docker工帮忙吗?还是我需要VM上的HAProxy?

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

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

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

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

通过将静态IP分配给您的Vagrant框

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

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

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

通过转发您的stream浪者箱中的端口

如果您不想将一个固定的IP地址分配给您的Vagrant框,您可以将Ubuntu端口的80端口转发到Vagrant主机(Windows机器)的80端口。

在你的Vagrantfile中 ,放

 config.vm.network "forwarded_port", guest: 80, host: 80 

现在,从Windows机器上,您可以通过http:// localhost /访问Web服务器。

其他的考虑

请注意,在您的Docker容器中,您的Web服务器必须接受来自外部的连接。 换句话说,您需要绑定到特殊的0.0.0.0networking接口,而不仅仅是localhost127.0.0.1