Dockerのネットワーク


単一ホスト内でのDockerネットワークの概要です。



参照元:Docker の基本学習 ~ Docker のネットワーク - Qiita

  • ホストには仮想ブリッジのdocker0が作成される
  • コンテナはvethを介してホストの仮想ブリッジと接続する
  • コンテナ内からはeth0というNICがあるように見える(実体はveth)
  • コンテナ内のeth0は、IPが自動で割り振られる(IPは不定)
  • コンテナからホストの外部に接続するにはNAT(IPマスカレード)が使われる
  • 単一ホスト上のコンテナ間の通信は、仮想ブリッジ経由で行わる

🎳 補足

仮想ブリッジ

Linux上に仮想的なL2スイッチを構成する機能です。L2スイッチはパケットに宛先情報として含まれるMAC(Media Access Control)アドレスでパケットの中継を行う機器です。

veth

veth(TAPデバイス)は仮想のネットワークインタフェース(NIC)です。
コンテナ側とホスト側にvethを作ることで仮想NICのペアを作り、その間で通信を行います。
コンテナ内のvetheth0として振る舞います。

🏀 NAT(IPマスカレード)

NAT(Network Address Translation)はパケットヘッダに含まれるIPアドレスを別のIPアドレスに変換する技術です。プライベートIPのホストから、グローバルIPのゲートウェイを通じてネットにアクセスし、外からは送信元をグローバルなIPとして扱えるようにするのに使われます。

またIPマスカレードはIPアドレスに加えてポート番号の変更も行います。

🚜 参考リンク

📚 おすすめの書籍