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アドレスに加えてポート番号の変更も行います。

👽 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)