Docker でネットワークサービスを公開する

Docker 中級

Mike Metzger

Data Engineering Consultant

ネットワークサービス

  • ネットワークサービスは特定のポートで待ち受けます
  • 同時に待ち受けできるのは 1 つの IP:ポートの組のみ
    • 例: 10.1.2.3:80 は 10.1.2.3 の 80 番ポートで待ち受け
  • 80 番で待ち受ける Web サーバーの別バージョンをデバッグするとします
    • そのポートしか使わないため、同時に 1 つしか起動できません
Docker 中級

コンテナ化されたサービス

  • アプリをコンテナ化すると、各コンテナは別 IP となり、そのポートで待ち受け可能
  • 複数のコンテナを同時に実行できます
  • では、ホストからコンテナ内のアプリへどう接続するか?
Docker 中級

ポートマッピング

  • 解決策はポートマッピング(ポート転送/変換)です
  • ある IP:ポートへの接続を別の IP:ポートへ自動転送します
  • 例: ホストの未使用ポートを、コンテナの 80 番にマップ
  • Docker エンジンは設定すれば自動で処理します

ポートマッピングの例

Docker 中級

ポートマッピングを有効化

  • 特定コンテナでポートマッピングを有効化するには、docker run-p フラグを使います
  • -p <ホストポート>:<コンテナポート>
  • -p 5501:80
  • 複数ポートに対して -p を複数指定可能
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker 中級

Let's practice!

Docker 中級

Preparing Video For Download...