无法通过主机 IP 从其他 Docker 容器访问 Docker 容器

无法通过主机 IP 从其他 Docker 容器访问 Docker 容器

我有一台运行 Wireguard VPN 的服务器,10.0.1.254/24并且 Docker 正在运行172.17.0.1/16

我的docker-compose.yaml样子如下(简化):

services:
  container_a:
    image: nginx:latest
    ports:
      - '10.0.1.254:80:80'

  container_b:
    image: alpine:latest

现在,我可以使用wget http://10.0.1.254主机上的 nginx 访问它。我也可以通过 VPN 对等体(例如10.0.1.1)以同样的方式访问它。但是,当我尝试从另一个 Docker 容器(例如docker compose exec container_b wget http://10.0.1.254)内执行此操作时,会出现超时。但是,我可以 ping 主机(docker compose exec container_b ping 10.0.1.254)。

我猜想这与 Docker 在主机上映射端口的方式有关。但我找不到太多相关信息。有人知道为什么这不起作用吗?

答案1

事实证明,我仍安装了 UFW,它已配置为允许传入连接到wg0接口上的此端口。但系统足够聪明,可以走捷径,直接从一个虚拟 Docker 接口转到另一个虚拟 Docker 接口,绕过该wg0接口的 ACCEPT 规则。

tail +1f /var/log/ufw.log我通过使用,然后wget从其他 Docker 容器运行失败的命令来解决这个问题。

就我而言,解决方案就是简单地禁用 UFW(sudo ufw disable),因为无论如何我都不会使用它。

相关内容