ホスト 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タイムアウトが発生します。ただし、ホスト ( docker compose exec container_b ping 10.0.1.254) に ping することはできます。

これは Docker がホスト上のポートをマップする方法と関係があるのではないかと思います。しかし、これに関する情報はあまり見つかりません。なぜこれが機能しないのか知っている人はいませんか?

答え1

結局、UFW がまだインストールされていて、wg0インターフェースのこのポートへの着信接続を許可するように構成されていたことが判明しました。しかし、システムは十分にスマートで、インターフェースのこの ACCEPT ルールをバイパスして、ある仮想 Docker インターフェースから別の仮想 Docker インターフェースへ直接ショートカットを実行できましたwg0

tail +1f /var/log/ufw.log私は を使用して、失敗したwgetコマンドを他の Docker コンテナから実行することでこれを理解しました。

私の場合、解決策はsudo ufw disable、とにかく UFW ( ) を使用していないので、単に UFW を無効にすることでした。

関連情報