Docker ネットワークドライバープラグイン
ここでは Docker Engine において、一般的に利用可能な Docker Engine ネットワークドライバープラグインについて説明します。 Docker Engine が管理するプラグインに関する情報は Docker Engine プラグインシステム を参照してください。
Docker Engine ネットワークプラグインは、Engineによるデプロイメントを拡張して、非常に多くのネットワーク技術へのサポートを可能とします。 対応するネットワーク技術としてたとえば VXLAN, IPVLAN, MACVLAN などがあり、これ以外にも全く異なる技術にも対応可能です。 ネットワークドライバープラグインは LibNetwork プロジェクトを通じてサポートされています。 各プラグインは LibNetwork における「リモートドライバー」として実装されており、Engine におけるプラグイン基盤を共有しています。 実際にネットワークドライバープラグインは、他のプラグインと同様の方法で取り入れることができるものであり、同じようなプロトコルを利用しています。
ネットワークプラグインとスウォームモード
旧来のプラグイン はスウォームモードでは動作しません。 一方 v2 プラグインシステム は、スウォーム上の各ワーカーノードにインストールしていれば、スウォームモードでも動作します。
ネットワークドライバープラグインの利用
ネットワークドライバープラグインのインストール方法や実行方法は、個々のプラグインにより異なります。 そこでプラグインをインストールする際には、プラグイン開発者が示す説明に従ってください。
ネットワークドライバープラグインを実行することができれば、後はビルトインのネットワークドライバーと変わらずに利用していきます。 つまりネットワーク関連の Docker コマンドにおいて、ドライバーを取り扱うコマンドを用いていきます。 たとえば以下のとおりです。
$ docker network create --driver weave mynet
ネットワークドライバープラグインの一覧が プラグイン にあります。
mynet
ネットワークは weave
により所有されたので、これ以降にネットワークを参照するコマンドは、プラグインに送信され実行されることになります。
$ docker run --network=mynet busybox top
ネットワークプラグインの検索
ネットワークプラグインはサードパーティにより開発され公開されています。 Docker Store またはそのサードパーティのサイトから入手できます。
ネットワークプラグインの開発
ネットワークプラグインは、Docker プラグイン API とネットワークプラグインプロトコルにより実装されます。
ネットワークプラグインプロトコル
ネットワークドライバープロトコル、およびプラグインアクティベーションコール(plugin activation call)については、libnetwork の一部 https://github.com/docker/libnetwork/blob/master/docs/remote.md としてドキュメント化されています。
関連情報
Docker メンテナーや関心を寄せているユーザーと会話をしてみたい方は、IRC チャネル #docker-network
にアクセスしてください。
- Docker ネットワーク機能の概要
- LibNetwork プロジェクト