macvlanをググる
例えば、ネットワークトラフィックの監視やシステム管理などのレガシーなDockerアプリケーションを構築した場合、物理的なネットワークに直接接続されることが予想されます。 このような状況では、macvlanネットワークドライバを使用して、各コンテナの仮想ネットワークインターフェースにMACアドレスを割り当て、物理ネットワークに直接接続された物理ネットワークインターフェースのように見せることができます。
各コンテナ=Linuxコンテナ
どうゆうことなのか?
Dockerは複数のネットワーク接続方式をネットワークドライバというPluggableな形式でサポートしている。
- Default Bridge
コンテナ開始時になにも指定しなければコンテナはdocker0に接続される。コンテナにはIPアドレスが付与される。
そうなんだねー。
こんな感じらしい。
- User Defined Bridge
ユーザーは新たなブリッジを作成することができる。作成されたブリッジに接続されたコンテナにIPアドレスが付与される。コンテナ名とIPアドレスがDNSサービスに登録される。
docker network create --driver bridge myBridge
docker run -it ubuntu-image --net=myBridge
で、macvlanは?
- macvlan
ホストのEthernetポートに仮想的なポートを作成してコンテナに割り当てる。仮想的なポートは固有のMACアドレスを持っている。また、通常のホストポート同様にIPアドレスを割り当てることができる。
コンテナはホスト外(10.0.0.0/24)とNATなしで通信できる。
コンテナはmacvlanを利用する他のコンテナと通信することができる。 ←ここ重要。
macvlanの制限事項としてホストのEthernetポートとは通信できない。
docker network create --driver macvlan --subnet=10.0.0.0/24 --gateway=10.0.0.1 -o parent=Eth mcv
docker run -it ubuntu-image --net=mcv
ほうほう、なるほどねー👍
(了)