在使用用户定义的桥接网络的Docker容器设置(3个容器)上。
我能够从另一个容器(同时使用IP和容器名称)访问一个容器。
但是我无法从主机上对进程(在容器中运行)执行ping操作。有人可以帮我吗?有可能吗?
设置在Windows 8上
在撰写文件中提到的4个容器中-不能从主机访问。 (既不使用容器名称也不使用IP)。尽管我可以使用IP和容器名称从另一个容器访问一个容器。
答案 0 :(得分:0)
我假设您正在尝试通过在撰写文件中声明的服务名称访问容器,但是您不能在撰写文件中声明的bridge
网络之外进行访问。
您需要从主机使用容器ip地址,并可以通过以下命令获取它:
docker inspect <container> -f '{{.NetworkSettings.Networks.<network>.IPAddress}}'
显然,您需要用容器名称替换<container>
占位符,并用网络名称替换<network>
。
例如,根据您的servers.yml
文件,您可以使用zookeeper
获取docker inspect zookeeper -f '{{.NetworkSettings.Networks.bridge.IPAddress}}'
IP地址
有关inspect
命令和
答案 1 :(得分:0)
我对Windows上的Docker设置没有更多的了解,但是我想您的服务正在localhost
(容器内部)监听,这就是为什么不能从外部访问它的原因
要从外部访问容器上运行的任何服务,您需要将服务端口绑定到0.0.0.0
IP地址
示例:
如果Nginx在容器内部的端口80上运行,但是绑定地址为127.0.0.1
或localhost
(只能从容器内部而不是主机或主机访问),如果需要要从外部访问您的nginx,您需要将其绑定地址localhost
更改为0.0.0.0
希望这会有所帮助。