从主机连接到docker进程

问题描述 投票:0回答:2

在使用用户定义的桥接网络的docker容器设置(3个容器)上。

  • 我能够从另一个容器(使用IP和容器名称)到达容器。
  • 但我无法从主机ping ping进程(在容器中运行)。任何人都可以帮助我吗?可能吗?

看看我的docker compose file

设置在Windows 8上

在compose文件中提到的4个容器中 - 无法从主机访问。 (既不使用容器名也不使用IP)。虽然我可以使用IP和容器名称从另一个容器访问一个容器。

docker docker-compose dockerfile
2个回答
0
投票

我假设您正在尝试从其在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


0
投票

我对Windows上的Docker设置没有太多了解,但我猜你的服务正在监听localhost(容器内部),这就是为什么它无法从外部访问

要从外部访问容器上运行的任何服务,您需要使用0.0.0.0 IP地址绑定服务端口

例:

如果Nginx在容器内的端口80上运行,但是绑定地址是127.0.0.1localhost(它只能从容器内部而不是在外部或从主机访问),如果你想从外部访问你的nginx你需要更改它绑定地址localhost0.0.0.0

希望它会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.