【コンテナネットワーキング】

コンテナネットワーキング とは?

最終更新:
💡 コンテナ同士に、通信の道をつなごう

コンテナ同士や外部との通信をつなぐ仕組み。DockerのブリッジやKubernetesのPodネットワークなどがあり、名前解決・外部公開・通信の制限は使う方式と設定で変わる。

📌 このページのポイント
内側の通信と、外への公開は別外部のブラウザー公開した入口へ接続ホストのポートを公開webWebアプリdbデータベースユーザー定義ブリッジ(同じホスト)内側では名前「db」で相手を探せる
Dockerのユーザー定義ブリッジの例。dbの外部公開は不要です。既定のbridgeやKubernetesでは、名前解決・通信の前提が異なります。
ひよこ ひよこ
コンテナを起動したら、そのまま話せるの?
ペンギン先生 ペンギン先生
どのネットワークへつなぐかによるよ。Dockerのブリッジは、同じホスト上のコンテナをつなぐ仕組み。図では自分で作ったブリッジへwebとdbを接続し、webがdbに問い合わせる例にしたよ。別のホストとの通信には、経路やオーバーレイなど別の仕組みが必要になるんだ。
ひよこ ひよこ
相手のIPアドレスを覚えておかないといけない?
ペンギン先生 ペンギン先生
Dockerのユーザー定義ブリッジなら、同じネットワークにいる相手をコンテナ名や別名で名前解決できるよ。ただし、最初からあるデフォルトのbridgeとは違う。デフォルトのbridgeでは、通常はIPアドレスで通信するので「ブリッジなら全部名前が使える」とは考えないでね。
ひよこ ひよこ
外のブラウザーからも、dbに接続できちゃう?
ペンギン先生 ペンギン先生
同じブリッジ内の通信と、外部への公開は別だよ。外からwebへ接続させるなら、ホストのポートとwebのポートを対応させて公開する。dbまで公開する必要はないね。ファイアウォールやアクセス制御も含めて、必要な入口だけを用意しよう。
ひよこ ひよこ
Kubernetesでも、コンテナが1つずつIPを持つの?
ペンギン先生 ペンギン先生
基本はPod単位で考えるよ。同じPodのコンテナはネットワークを共有し、localhostで通信できる。別のPodへはPodのIPなどで通信し、アプリの安定した接続先にはServiceを使う。PodのIPが変わることもあるから、相手のIPを直接固定しない設計が役立つんだ。
ひよこ ひよこ
通信のルールは、どこで決めるの?
ペンギン先生 ペンギン先生
Kubernetesではネットワークの実装にCNI対応のプラグインを使う構成が多いよ。NetworkPolicyで通信を制限できるけれど、対応するプラグインが必要なんだ。設定を書くだけで必ず制限されるわけではないので、実際に許可・拒否される通信を確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンテナネットワーキング」って出てきたら「コンテナ同士や外部に通信の道をつなぐ仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Container Networking」 = コンテナのネットワーク接続
💬 コンテナをどこへつなぎ、相手をどう探し、どの通信を許すかを扱う仕組みだよ。

参考資料

← 用語集にもどる