Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从w10 pc通过网络主机访问docker容器?_Docker_Windows 10 - Fatal编程技术网

如何从w10 pc通过网络主机访问docker容器?

如何从w10 pc通过网络主机访问docker容器?,docker,windows-10,Docker,Windows 10,我正在开发一个大的架构,分成几个部分 每个部分都使用服务(例如:redis)和其他项目 我设置了一个环境,可以在docker容器中使用适当的端口映射运行我需要的所有服务,这样重复的服务就不会冲突 现在,如果我直接在pc上运行我自己的体系结构,这一切都很好。但现在我也在docker容器中运行我的体系结构(准备生产),并尝试在我的系统中运行这些。首先,他们无法访问已设置的容器(服务)。我通过将自己的体系结构docker容器作为网络主机运行来解决这个问题 现在我所有的容器都运行得很好,但当我转到htt

我正在开发一个大的架构,分成几个部分

每个部分都使用服务(例如:redis)和其他项目

我设置了一个环境,可以在docker容器中使用适当的端口映射运行我需要的所有服务,这样重复的服务就不会冲突

现在,如果我直接在pc上运行我自己的体系结构,这一切都很好。但现在我也在docker容器中运行我的体系结构(准备生产),并尝试在我的系统中运行这些。首先,他们无法访问已设置的容器(服务)。我通过将自己的体系结构docker容器作为网络主机运行来解决这个问题

现在我所有的容器都运行得很好,但当我转到
http://localhost:80
(其中一个容器正在端口80上运行)。其他端口上的其他容器也无法通过这种方式访问。我做错什么了吗?有办法联系到他们吗

我在Windows10Pro上运行docker。(注意:docker 1.12.5,更新到1.12.6后不知何故崩溃)

使用
--network host
只需将主机的网络接口连接到容器中即可。它不一定允许端口流量通过系统防火墙

如果绑定容器端口,例如使用
-p:
运行容器,Docker应相应地调整防火墙规则并使其正常工作。(当容器停止时,也应在其自身之后进行清理。)

或者,您可以使用Docker overlay Network,这通常是本例中建议的解决方案

首先,为应用程序创建一个网络

docker network create myapp
然后,告诉每个容器使用该网络

docker run --network myapp <other options...>
docker run——网络myapp

您是否正确映射了端口?我知道您的应用程序在端口80的容器中运行,但不清楚您是否也在容器外部映射了该端口。您应该提供有关如何运行容器的详细信息。@AlexanderGeorge如果我在network=host中运行,我还需要映射端口吗?@JoelHarkes不需要映射,但您可能需要调整主机的防火墙规则,因为docker在
network=host
的情况下不会这样做。这里有一些有趣的细节:谢谢你的防火墙笔记。在我意识到我需要添加新的防火墙规则之前的半天里,我正在对“无主机路由”问题进行故障排除。