無法透過主機 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),因為我無論如何都不會使用它。

相關內容