Docker4
マルチネットワーク構築
StandaloneSwarmのオーバーレイネットワーク
docker-machine create mh-keystore サーバーなどの稼働状況を監視するホスト(mh-keystore)を作成
eval $(docker-machine env mh-keystore) 操作対象をmh-keystoreに切り替える
docker run -d --name consul -p 8500:8500 -h consul consul agent -server -bootstrap -client 0.0.0.0 consulコンテナ起動
→consulイメージからconsulコンテナをデタッチモードで起動し8500番ポートで公開するように設定。ホスト名もconsul。
-serverでサーバーモードで起動。一台だけでconsulサーバーとして機能させる為に-boostrapをいれる。
-clientでconsulにきた問い合わせを受け付けるIPアドレスを設定、この場合全てのIPアドレスに応答する。
-d --name consul: デタッチモードとコンテナ名の指定
consul: イメージ名
Swarmを管理するホストを作成
docker-machine create --swarm --swarm-master \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
mhs-demo0
--swarmで作成するホストをSwarmクラスタに追加。
--swarm-masterはクラスタの管理ノード
--swarm-discovery=""はswarmで使われるキーバリューホストの場所を指定する
--engine-opt=""はオーバーレイように詳細な情報を共有するために設定する
同じ設定のArgentノードで動作させるホストを作る
docker-machine create --swarm \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
mhs-demo1
操作対象をSwarmのマスターノードに設定
eval $(docker-machine env --swarm mhs-demo0)
docker network create --driver overtlay
オーバーレイネットワークを作成
docker network create --driver overlay --subnet=10.0.9.0/24 mh-net
Exitする
docker-machine ssh mhs-demo0
docker run -itd --name web --network mh-net --env "constraint:node==mhs-demo0" nginx
--env "constraint:node==mhs-demo0"→Swarmクラスタ内のmhs-demo0ホストのノードを指定する環境変数
--network mh-net→上記で設定したオーバーレイネットワークに接続