仮想ネットワークの作成・削除
この構築ガイドでは、 dockerで新たに仮想ネットワーク os を作成し、 コンテナを仮想ネットワーク os に接続しています。 デフォルトの仮想ネットワークでもコンテナは利用可能ですが、 デフォルトのネットワークではなく、 別途ユーザ専用の仮想ネットワークを作成・利用する方法がdocker社推奨の使い方です。 また、 ユーザ定義の仮想ネットワークにすれば名前解決が楽なので、 これが推奨です
実際に仮想ネットワークを作成・削除しているスクリプトは次のファイルです
04_docker/04-04_debian-nginx-web.py-mysql/scripts/scripts/libexec/network-create.sh
04_docker/04-04_debian-nginx-web.py-mysql/scripts/scripts/libexec/network-destroy.sh
このスクリプトを読み解くために必要な情報を解説します
スクリプトの核心部分は次の4ヶ所です。
最初の3行は設定で「変数=値」形式です
(シェルスクリプトでは、変数宣言を、こう書きます。
「変数=値」は空白なしの一続きです。
変数のあたまに$
をつける(例: $変数
)と、変数の値を展開する意味になります)
net=172.30.0.0/16
range=172.30.0.0/24
gw=172.30.0.1
docker network create --driver=bridge --subnet=$net --ip-range=$range --gateway=$gw os
4行目を実際に実行する際には(変数が展開され)
docker network create --driver=bridge --subnet=172.30.0.0/16 --ip-range=172.30.0.0/24 --gateway=172.30.0.1 os
が実行されています。
--subnet
は利用したいネットワークアドレス、
--gateway
がそのネットワークのデフォルトルートです。
いちおう--ip-range
をつけていますが--ip-range
は必須ではありません
スクリプトでは明示的に 172.30/16 を指定しましたが、 アドレスにこだわりがないなら、 ネットワークの作成は単に
docker network create os
と実行してもかまいません。 IPアドレスはdockerが適当に割り当てます (プライベートアドレス空間172.16.0.0/12の中から、 /16 単位で利用していないネットワークを小さい順に割り当てていくはずです)
削除
docker network rm os
ちなみに docker がデフォルトで作成する3つのネットワークは削除できません
ステータス
docker network inspect os >/dev/null && is_found=1 || is_found=0
docker network ls