Docker ネットワーク・ドライバ・プラグイン

Engine ネットワーク・ドライバ・プラグイン

ここでは Docker Engine において、一般的に利用可能な Docker Engine ネットワーク・ドライバ・プラグインについて説明します。 Docker Engine が管理するプラグインに関する情報は Docker Engine プラグイン・システム を参照してください。

Docker Engine ネットワーク・プラグインは、Engineによるデプロイメントを拡張して、非常に多くのネットワーク技術へのサポートを可能とします。 対応するネットワーク技術としてたとえば VXLAN, IPVLAN, MACVLAN などがあり、これ以外にも全く異なる技術にも対応可能です。 ネットワーク・ドライバ・プラグインは LibNetwork プロジェクトを通じてサポートされています。 各プラグインは LibNetwork における「リモートドライバ」として実装されており、Engine におけるプラグイン基盤を共有しています。 実際にネットワーク・ドライバ・プラグインは、他のプラグインと同様の方法で取り入れることができるものであり、同じようなプロトコルを利用しています。

ネットワーク・ドライバ・プラグインとスウォーム・モード

Docker 1.12 から スウォーム・モード と呼ばれるクラスタ管理およびオーケストレーション機能がサポートされるようになりました。 スウォーム・モードにおいて稼動する Docker Engine は、現時点ネットワークに関しては、ビルトインの overlay ドライバのみをサポートします。 したがってすでに提供されているネットワーク・プラグインは、スウォーム・モードにおいては動作しません。

スウォーム・モード以外で Docker Engine を稼動させると、Docker 1.1 において動作していたネットワーク・プラグインは引き続き正常に動作します。 そこには特に修正を必要としません。

ネットワーク・ドライバ・プラグインの利用

ネットワーク・ドライバ・プラグインのインストール方法や実行方法は、個々のプラグインにより異なります。 そこでプラグインをインストールする際には、プラグイン開発者が示す説明に従ってください。

ネットワーク・ドライバ・プラグインを実行することができれば、後はビルトインのネットワーク・ドライバと変わらずに利用していきます。 つまりネットワーク関連の Docker コマンドにおいて、ドライバを取り扱うコマンドを用いていきます。 たとえば以下のとおりです。

$ docker network create --driver weave mynet

ネットワーク・ドライバ・プラグインの一覧が プラグイン にあります。

mynet ネットワークは weave により所有されたので、これ以降にネットワークを参照するコマンドは、プラグインに送信され実行されることになります。

$ docker run --network=mynet busybox top

ネットワーク・プラグインの開発

ネットワーク・プラグインは、Docker プラグイン API とネットワーク・プラグイン・プロトコルにより実装されます。

ネットワーク・プラグイン・プロトコル

ネットワーク・ドライバ・プロトコル、およびプラグイン・アクティベーション・コール(plugin activation call)については、libnetwork の一部 https://github.com/docker/libnetwork/blob/master/docs/remote.md としてドキュメント化されています。

関連情報

Docker メンテナや関心を寄せているユーザと会話をしてみたい方は、IRC チャネル #docker-network にアクセスしてください。

参考

Engine network driver plugins
https://docs.docker.com/engine/extend/plugins_network/