我正在开发一个大型架构,分成几个部分。
每个部分都使用服务(例如:redis)和其他项目。
我设置了一个环境,我可以在Docker容器中使用适当的端口映射运行我需要的所有服务,这样重复的服务就不会发生冲突。
现在,如果我直接在我的电脑上运行自己的架构,这一切都很好。但现在我也在/作为docker容器(准备生产)运行我的架构,并试图在我的系统中运行它们。首先,他们无法到达已经设置的容器(服务)。我通过运行我自己的架构docker容器--network host
来解决这个问题。
现在我的所有容器都运行良好,但是当我转到http://localhost:80
(其中一个容器在端口80上运行)时,我似乎无法联系到它们。其他端口上的其他容器也无法以这种方式访问。我做错什么了吗?有没有办法接触他们?
我正在Windows 10专业版上运行docker。 (注意:docker 1.12.5,以某种方式更新到1.12.6崩溃)
答案 0 :(得分:2)
使用--network host
只需将主机的网络接口连接到容器中。它不一定允许端口流量通过系统防火墙。
如果绑定容器端口,例如使用-p <host_port>:<container_port>
运行容器,Docker应相应地调整防火墙规则并使其全部工作。 (当容器停止时,它也应该自行清理。)
或者,您可以使用Docker覆盖网络,在这种情况下通常是建议的解决方案。
首先,为您的应用程序创建一个网络。
docker network create myapp
然后,告诉每个容器使用该网络。
docker run --network myapp <other options...>