ネットワーキング

Docker Swarm は Docker 1.9 で追加された新しいネットワーキング・モデルと完全に互換性があります。

セットアップ

マルチホスト・ネットワーキングを使うには、Docker エンジンを --cluster-store--cluster-advertise のオプションをドキュメントが示すように付けて起動する必要があります。

ネットワークの一覧

次の例は、クラスタ上に2のノード node-1node-1 があるものとします。

$ docker network ls
NETWORK ID          NAME                   DRIVER
3dd50db9706d        node-0/host            host
09138343e80e        node-0/bridge          bridge
8834dbd552e5        node-0/none            null
45782acfe427        node-1/host            host
8926accb25fd        node-1/bridge          bridge
6382abccd23d        node-1/none            null

このように、各ネットワーク名の接頭語がノード名になっています。

ネットワークの作成

デフォルトでは、Swarm はネットワーク全体を範囲とする overlay ネットワーク・ドライバを使います。

$ docker network create swarm_network
42131321acab3233ba342443Ba4312
$ docker network ls
NETWORK ID          NAME                   DRIVER
3dd50db9706d        node-0/host            host
09138343e80e        node-0/bridge          bridge
8834dbd552e5        node-0/none            null
42131321acab        node-0/swarm_network   overlay
45782acfe427        node-1/host            host
8926accb25fd        node-1/bridge          bridge
6382abccd23d        node-1/none            null
42131321acab        node-1/swarm_network   overlay

ここで表示されているように、2つのノード上に同じ ID があります。これは同じネットワークだからです。

ローカルな範囲でネットワークを作成したい場合は(例えば、ブリッジ・ドライバを使いたい時)、 <ノード名>/<名前> の形式でなければ、ランダムに選んだノード上でネットワークを作成します。

$ docker network create node-0/bridge2 -b bridge
921817fefea521673217123abab223
$ docker network create node-1/bridge2 -b bridge
5262bbfe5616fef6627771289aacc2
$ docker network ls
NETWORK ID          NAME                   DRIVER
3dd50db9706d        node-0/host            host
09138343e80e        node-0/bridge          bridge
8834dbd552e5        node-0/none            null
42131321acab        node-0/swarm_network   overlay
921817fefea5        node-0/bridge2         brige
45782acfe427        node-1/host            host
8926accb25fd        node-1/bridge          bridge
6382abccd23d        node-1/none            null
42131321acab        node-1/swarm_network   overlay
5262bbfe5616        node-1/bridge2         bridge

ネットワークの削除

ネットワークの削除は、ネットワーク ID か ネットワーク名を使えます。異なる2つのネットワークが同じ名前の場合は、 <ノード名>/<名前> を使えます。

$ docker network rm swarm_network
42131321acab3233ba342443Ba4312
$ docker network rm node-0/bridge2
921817fefea521673217123abab223
$ docker network ls
NETWORK ID          NAME                   DRIVER
3dd50db9706d        node-0/host            host
09138343e80e        node-0/bridge          bridge
8834dbd552e5        node-0/none            null
45782acfe427        node-1/host            host
8926accb25fd        node-1/bridge          bridge
6382abccd23d        node-1/none            null
5262bbfe5616        node-1/bridge2         bridge

swarm_network は各ノードから削除されましたが、 bridge2node-0 からのみ削除されました。