docker コンテナからホストのポートにアクセスするには?

ショコラ
ショコラ

docker コンテナからホストのポートにアクセスするには?

ようするに、ドッカーコンテナを2つ立ち上げて、ドッカーコンテナAからドッカーコンテナBのポートにアクセスするには設定が必要です。

①リバースプロキシの nginx のコンテナを docker-compose で起動する。
②それとは別に apache のコンテナを docker-compose で起動する。

コンテナからホストにアクセスするには、ドッカーコンポーズのファイルに「host.docker.internal:host-gateway」を書くことは分かった。
nginxコンテナ から apacheコンテナ へは ping が届くことも確認した。
しかし、nginx から apache のポートにアクセスすると
「curl: (7) Failed to connect to 192.168.1.135 port 6080 after 0 ms: Couldn’t connect to server」
というエラーになった。
次に、nginxコンテナ から apacheコンテナ に nmap を実行して空いているポートがあるかを確認した。

apt install nmap
nmap apache

そうすると ssh だけがアクセスできることが分かった。
ssh にアクセスできるということは、iptables のルールの問題だと分かった。

chatgpt を使いポートの開け方を調べた。
「ufw allow 6080/tcp」ここにたどり着いた。

この対応、うっかり忘れそうですが重要ですね。ハマるポイントですね。

もっさん先輩
もっさん先輩

docker-compose.yml には、こちらを定義しておく。

extra_hosts:
  - "host.docker.internal:host-gateway"

リバースプロキシには以下のように、ホストの6080番にアクセスするようにするが、エラーになる。

  location / {
    proxy_pass http://host.docker.internal:6080;
  }

ホストの6080番のポートを開ける。

ufw allow 6080/tcp

以上

Scroll to Top