Dockerポートマッピング戦略
-pフラグによるDockerポートマッピングをマスター。ホスト-コンテナ間のポートマッピング、特定インターフェースへのバインド、ランダムポート割り当て、UDPポートを学びます。
Container Lifecycle
詳細な説明
-pによるポートマッピング
Dockerポートマッピングはホストネットワークポートをコンテナポートに接続し、コンテナ化されたサービスにアクセス可能にします。
基本構文
# ホストポート8080をコンテナポート80にマッピング
docker run -d -p 8080:80 nginx
# 複数ポートのマッピング
docker run -d -p 8080:80 -p 443:443 nginx
特定インターフェースへのバインド
デフォルトでは-pはすべてのインターフェース(0.0.0.0)にバインドします。セキュリティのためlocalhostに制限:
# localhostからのみアクセス可能
docker run -d -p 127.0.0.1:5432:5432 postgres:16
# 特定のIPにバインド
docker run -d -p 192.168.1.100:80:80 nginx
ランダムポート割り当て
Dockerにランダムな利用可能ホストポートを割り当てさせる:
docker run -d -p 80 nginx
# 割り当てられたポートを確認
docker port <container-id>
UDPポート
非TCPポートのプロトコルを指定:
docker run -d -p 53:53/udp dns-server
docker run -d -p 53:53/tcp -p 53:53/udp dns-server
ポート範囲
一度にポート範囲をマッピング:
docker run -d -p 8000-8010:8000-8010 my-app
公開ポートの確認
docker port my-container
# 80/tcp -> 0.0.0.0:8080
# 80/tcp -> [::]:8080
ユースケース
開発中のWebアプリケーションやAPIの公開、localhostのみへのバインドによるデータベースポートのセキュア化、同じサービスの複数インスタンスを異なるポートで実行、UDPを使用するDNSやストリーミングサービスの設定。