在使用用户定义的桥接网络的docker容器设置(3个容器)上。
设置在Windows 8上
在compose文件中提到的4个容器中 - 无法从主机访问。 (既不使用容器名也不使用IP)。虽然我可以使用IP和容器名称从另一个容器访问一个容器。
我假设您正在尝试从其在compose文件中声明的服务名称访问您的容器,但您不能在compose文件中声明的bridge
网络之外执行此操作。
从您的主机,您需要使用容器IP地址,您可以使用以下命令获取它:
docker inspect <container> -f '{{.NetworkSettings.Networks.<network>.IPAddress}}'
显然,您需要用您的网络名称替换容器名称和<container>
的<network>
占位符。
例如,基于你的servers.yml
文件,你可以用zookeeper
获取docker inspect zookeeper -f '{{.NetworkSettings.Networks.bridge.IPAddress}}'
的ip地址
有关docker documentation命令和更多详细信息,请参阅inspect
我对Windows上的Docker设置没有太多了解,但我猜你的服务正在监听localhost
(容器内部),这就是为什么它无法从外部访问
要从外部访问容器上运行的任何服务,您需要使用0.0.0.0
IP地址绑定服务端口
例:
如果Nginx在容器内的端口80上运行,但是绑定地址是127.0.0.1
或localhost
(它只能从容器内部而不是在外部或从主机访问),如果你想从外部访问你的nginx你需要更改它绑定地址localhost
到0.0.0.0
希望它会有所帮助。