0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker上のWebアプリにホストからアクセスできない理由と解決方法

Posted at

DockerでWebアプリを立ち上げたとき、ホスト(PC)のブラウザから localhost:8000 などでアクセスしようとしても接続できないことがあります。

これはアプリケーションのバインドアドレスとDockerのポートマッピングの関係を正しく理解していないと起きる典型的なトラブルです。

よくある症状

アプリ起動: アプリが 127.0.0.1:8000 で起動

→ そのままでは ホストのブラウザからアクセスできない

表示されるエラー例:

  • 「このサイトにアクセスできません」
  • ERR_EMPTY_RESPONSE
  • ERR_CONNECTION_REFUSED

原因:127.0.0.1 にバインドしている

127.0.0.1 は「localhost(自分自身)」を表す特殊なIPアドレスです。

Dockerコンテナ内でアプリが 127.0.0.1:ポート番号 にバインドされている場合、それは**「コンテナ内部からしかアクセスできない」**という意味になります。

解決策:0.0.0.0 にバインドする

アプリを起動するとき、次のように 0.0.0.0 にバインドすると、コンテナ外からアクセスできるようになります。

起動例(フレームワークにより異なる):
  例)--host 0.0.0.0
  例)bind 0.0.0.0:8000

0.0.0.0 は「すべてのネットワークインターフェース」を意味します。
これにより、Dockerのポートフォワーディングと連携してホストからアクセス可能になります。

Docker Composeでの設定(例)

version: '3.8'

services:
  web:
    build: .
    ports:
      - "8000:8000"  # ホストの8000番 → コンテナの8000番
    volumes:
      - .:/app

この例では、ホストの localhost:8000 にアクセスすると、コンテナの 8000 番ポートに転送されます。

正常にアクセスできる構成まとめ

状況 アプリのバインド先 Dockerの ports 設定 ホストからアクセス
❌ アクセス不可 127.0.0.1:8000 8000:8000 ✕(コンテナ外から見えない)
✅ アクセス可能 0.0.0.0:8000 8000:8000 ○(コンテナ外からアクセス可)

他の端末(スマホなど)からアクセスするには?

以下の条件を満たせば、同じLAN内のスマホなどからPC上のDockerアプリにアクセスできます:

1.アプリが 0.0.0.0 にバインドされている
2. Dockerの ports で該当ポートが公開されている
3. ホストOSの ファイアウォールでポートを開放している
4. アクセス先は「ホストPCのローカルIPアドレス」

スマホから http://192.168.x.x:8000 にアクセスj
192.168.x.x はホストPCのIP。ipconfig(Windows)や ifconfig/ip a(Mac/Linux)で確認できます。

セキュリティに注意

  • 0.0.0.0 にバインドすることで、全てのネットワークインターフェースからの接続を受け付ける状態になります。
  • 開発環境では便利ですが、本番環境でそのまま使うのは危険です。
  • 本番ではリバースプロキシ(nginx など)+ HTTPS を推奨します。

まとめ

  • アプリが 127.0.0.1 にバインドされていると、Docker外からアクセスできない。
  • 0.0.0.0 にバインドすれば、Docker外(ホストや他デバイス)からアクセス可能になる。
  • Dockerの ports 設定と組み合わせて、適切に公開することが重要。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?