やってみたことを淡々と。
環境
- Docker 1.9.1
- Ubuntu 15.04
参考
実行
作成
作成の基本形はこんな感じ。
$ docker network create \
--driver=bridge \
--subnet=172.30.0.0/16 \
--gateway=172.30.0.8 \
mynet
de40d30a63ab9b17df4c4f8ad1c93d176b56f44afe314635f0f96f44afe314635b07fb602b07fb602de40d30a63ab9b17f3d3
実行するとネットワークの ID が出力される。
補足
-
--subnet
を省略すると Docker 標準ブリッジの 172.17.0.0/16 を起点に 172.18.0.0/16 , 172.19.0.0/16 と、繰り上げた値が自動的に設定される。 -
--gateway
を省略するとネットワーク範囲のうち、一番値の小さなものが自動的に設定される。 - 上では使っていないが
-o com.docker.network.bridge.name=bridgename
とすることで、ブリッジの名前を設定することができる。- 標準では
br-XXXXXXXXXXXX
形式の名前が付く。この 12桁の X は ネットワーク ID の先頭部分が入る。
- 標準では
確認
Docker が管理するネットワークを一覧表示するには docker network ls
を使う。
$ docker network ls
NETWORK ID NAME DRIVER
f3c95be71222 none null
109db1b78591 host host
de40d30a63ab mynet bridge
795b9950cbed bridge bridge
ip
コマンドで確認するとこんな感じ。
$ ip route
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.30.0.0/16 dev br-de40d30a63ab proto kernel scope link src 172.30.0.1
作成時に設定したサブネットの値に br-XXXXXXXXXXXX
形式の名前でブリッジが登録されている。
ネットワークの詳細は docker network inspect mynet
で確認できる。
$ docker network inspect mynet
[
{
"Name": "mynet",
"Id": "de40d30a63ab9b17df4c4f8ad1c93d176b56f44afe314635f0f96f44afe314635b07fb602b07fb602de40d30a63ab9b17f3d3",
...
使用
使用するには docker run
時に --net
オプションで作成したネットワークを指定する。
$ docker run --net=mynet ubuntu
ip route
で確認すると、作成したネットワークの範囲にコンテナが収まっていることがわかる。
$ docker run --net=mynet ubuntu ip route
default via 172.30.0.8 dev eth0
172.30.0.0/16 dev eth0 proto kernel scope link src 172.30.0.1
削除
削除は docker network rm
。
$ docker network rm mynet
ちなみに使用中のネットワークを削除しようとするとエラーが出る。
$ docker network rm mynet
Error response from daemon: network mynet has active endpoints