我一直在尝试使用docker compose设置docker环境。令我难以理解的一个问题是我的docker容器无法到达我的主机。
我使用以下撰写文件设置容器:
version: '3'
services:
webapp:
image: ...
ports:
- "8080:8080"
当我进入容器时,我能够ping我的主机:
ping ${dockerHostIP}
然而,当我尝试使用容器内的curl检索主页时:
curl http://${dockerHostIP}:8080
我明白了:
curl: (7) Failed connect to ${dockerHostIP}:8080; No route to host
我无法弄清楚应该怎样做才能解决这个无路由到主机错误。不幸的是,我需要能够做到这一点,因为Web应用程序在内部使用其主机名发出请求。
Traceroute结果:
traceroute ${dockerHostIP}
traceroute to ${dockerHostIP} (${dockerHostIP}), 30 hops max, 60 byte packets
1 ${dockerHostName} (${dockerHostIP}) 0.039 ms !X 0.012 ms !X 0.007 ms !X
答案 0 :(得分:2)
令我惊讶的是,在我的情况下,这实际上是一个防火墙问题。
更新/启用docker主机上的tcp端口[2375]可修复此问题。
sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
sudo firewall-cmd --reload
有用的链接: 1. enter link description here 2. enter link description here