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やストリーミングサービスの設定。

試してみる — Docker CLI Reference

フルツールを開く