从主机连接到Docker进程

时间:2018-09-10 09:17:20

标签: docker docker-compose dockerfile

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

  • 我能够从另一个容器(同时使用IP和容器名称)访问一个容器。

  • 但是我无法从主机上对进程(在容器中运行)执行ping操作。有人可以帮我吗?有可能吗?

看到我的docker compose file

设置在Windows 8上

在撰写文件中提到的4个容器中-不能从主机访问。 (既不使用容器名称也不使用IP)。尽管我可以使用IP和容器名称从另一个容器访问一个容器。

2 个答案:

答案 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命令和

的更多详细信息,请参见docker documentation

答案 1 :(得分:0)

我对Windows上的Docker设置没有更多的了解,但是我想您的服务正在localhost(容器内部)监听,这就是为什么不能从外部访问它的原因

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

示例:

如果Nginx在容器内部的端口80上运行,但是绑定地址为127.0.0.1localhost(只能从容器内部而不是主机或主机访问),如果需要要从外部访问您的nginx,您需要将其绑定地址localhost更改为0.0.0.0

希望这会有所帮助。