はじめに

DockerのネットワークにはVXLANなどの最新技術を始めとして様々なネットワーク技術が使われているが、これらはアプリケーションエンジニアのように低レイヤーの技術まで扱わない人には見たことの無い単語や概念ばかりで辛いことが想像できる。僕はこのあたりの知識はIaaSを構築していたり、小規模ISPの構築、運用に携わっていたので自然に身につけられたが、一般的には必要としていない人の方が多いのではないだろうか。

本記事では、ネットワーク技術に明るくない人を対象に体系的なネットワーク技術[1]を習得するための書籍や記事を紹介する。

Docker特有のネットワークについて

この記事はDockerのネットワークに特化したものではない。それらを学びたい場合は中井悦司さんのDockerを支える技術が詳しいのでそちらを参照していただきたい。

ネットワークの仕組みを理解する

① ネットワークはなぜつながるのか

技術本ではないがネットワーク技術を学ぶ取っ掛かりになる本。読み終わる頃にはネットワークの仕組みの全体像がわかるようになる。いきなりTCPとかUDPとかネットワークプロトコルの話とかされてもわからないという人向け。

L2/L3/L4の基本を理解する

Dockerのネットワーク構築で必要は主な知識はOSI参照モデルでいうところのLayer2からLayer4の技術である(L2、L4と略すことが多い)。ここで紹介している書籍や記事で出て来る単語は抑えておいた方がいい。

② 3 Minutes Networking

技術書というよりは、読み本だが平易にL1からL7まで説明している。この本は元々Webサイトが書籍化されたもので、そちらは無料で閲覧可能。Webでの閲覧が好きな人は、3 Minutes Networkingを読めば良い。

[改訂新版] 3分間ネットワーク基礎講座
  • Author: 網野 衛二
  • Manufacturer: 技術評論社
  • Publish date: 2010-09-11
  • ③ マスタリングTCP/IP 入門編

    OSI参照モデルで言うところのL3/L4の技術について極めてわかりやすく説明している。Dockerでもlibnetworkを使って自分でL3ネットワークを構築できるが、TCP/IPの知識が無いと自在に操ることが出来ない。TCP/IPについてこれよりわかりやすい日本語書籍は見たことがない。

    マスタリングTCP/IP 入門編 第5版
  • Author: 竹下 隆史
  • Manufacturer: オーム社
  • Publish date: 2012-02-25
  • ④ ネットワークエンジニアとして(初級)

    “ネットワークエンジニアとして”という僕がネットワークを勉強しはじめた時に良く参考にしていたサイトがある。こちらも無料で閲覧出来る上に、とても解りやすくまとまっている。ここの初級辺を一通り読むと一層理解が深まるだろう。

    L2をさらに理解する

    ブリッジやスイッチといったネットワーク機器が担当しているのがLayer2。Dockerでも仮想ブリッジが利用されている。ネットワークエンジニアには馴染み深いVLANなどのL2技術は大学でコンピュータ・サイエンスを選考していても深いところまでは扱わないが、コンテナ界隈で良く出て来るVXLANはこのVLANでできなかったことを実現するために出てきた技術なので、こんな技術があるのかくらいには理解しておきたい。

    ⑤ ネットワークエンジニアとして:VLANをはじめから

    VLANの技術概要を理解するのに使ったサイト。CCNAとかCCNPとかネットワークベンダ資格の勉強をしても学べるが、そこまで学習コストを払う必要はない。

    ⑥ 30Minutes Networking BCMSN

    このページのBCMSNの第1回から第15回までを読むと良い。

    VXLANを理解する

    DockerやKubernetesなどのコンテナ技術を触っているとVXLANというプロトコルが出て来る。あまりに色々な所で耳にする単語なのでネットワーク業界での一般的な技術と考えている人もいるかもしれないが、実はこれは最近で出てきたばかりのプロトコルであり、全然枯れた技術ではない。役割は以下のとおり。

    VXLANは、イーサネットフレームをカプセル化することで、レイヤー3(L3)のネットワーク上に論理的なL2ネットワークを構築できるトンネリングプロトコルだ。トンネルは、ハイパーバイザーに含まれる仮想スイッチなどで終端される。これをトンネル終端ポイント(VTEP)と呼ぶ。実際にはL3のIPネットワークを介して仮想スイッチ間を接続する場合でも、仮想マシン(VM)からはフラットなL2ネットワークに見えるのが特徴

    (参考:http://itpro.nikkeibp.co.jp/article/Keyword/20121210/443223/)

    要するにL2 over L3のオーバレイを実現するための技術である。Dockerを使ったマルチホストネットワークでのコンテナ間通信をしたい場合は理解しておきたい。

    ⑦ VXLAN参考記事

    その他の用語を理解する(随時更新)

    データプレーン、コントロールプレーン

    Docker container networking:overlay network で出て来る。

    まとめ

    この記事ではネットワーク技術に明るくない、アプリケーションエンジニアを対象としてDockerのネットワークを理解する上、ネットワーク技術の体系的な理解をする上で参考になる書籍・記事を共有した。紹介した書籍と記事で学べる範囲が被っているところもあるが、異なる教材で同じことを学ぶとより一層理解が深まるし、これを機会にネットワークの基本を体系立てて理解したい場合は全部読んでも意味はあると考えている。少しでも、Dockerのネットワーク理解の助けになることを期待している。

    [1] ネットワークエンジニアには馴染み深い、OSPFなどの動的ルーティングプロトコル、AS間経路交換に使われるBGPなど、他にもネットワーク技術はたくさんあるが必要ないと判断したものは省略している。