やったこと
docker を使ってみます。
チュートリアルの Part4 です。
調査
Swarmクラスタの理解
swarm とは Docker が動作し、クラスタに参加しているマシン・グループです。
swarm 上のマシンは物理あるいは仮想どちらも使えます。swarm に加わった後は、これらは ノード として参照されます。
$ docker swarm init
swarm mode を有効化し、現在のマシンを swarm マネージャにします。
仮想マシン の作成
$ docker-machine create --driver virtualbox myvm1
$ docker-machine create --driver virtualbox myvm2
swarm の初期化
$ docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377"
Swarm initialized: current node (xxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token [my_token] 192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
これで myvm1
が swarm manager となりました。
myvm2 を join する
$ docker-machine ssh myvm2 "docker swarm join \
--token [my_token] \
192.168.99.100:2377"
This node joined a swarm as a worker.
my_token
は自分の token に置き換えてください。
node 確認
$ docker-machine ssh myvm1 "docker node ls"
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
2y7x69ce4gkm0eewep0meoyjk * myvm1 Ready Active Leader 19.03.3
x3pmieqf6lri4b4wqp7hhgrw7 myvm2 Ready Active 19.03.3
デプロイ
$ docker-machine scp docker-compose.yml myvm1:~
$ docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml getstartedlab"
※ docker-compose.yml は Part3 で使ったものを使用します。
image は Docker Hub にアップロードしているものを使います。
スタック (stack) の確認
$ docker-machine ssh myvm1 "docker stack ps getstartedlab"
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
ocgug6lzsq8t getstartedlab_web.1 hogehoge/get-started:part1 myvm1 Running Running 21 hours ago
wwq7y0fp5a8k getstartedlab_web.2 hogehoge/get-started:part1 myvm2 Running Running 21 hours ago
oyeqksqowa9x getstartedlab_web.3 hogehoge/get-started:part1 myvm1 Running Running 21 hours ago
jl7rqoy40yxl getstartedlab_web.4 hogehoge/get-started:part1 myvm2 Running Running 21 hours ago
qrrp9ft7fv87 getstartedlab_web.5 hogehoge/get-started:part1 myvm2 Running Running 21 hours ago
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
myvm1 - virtualbox Running tcp://192.168.99.100:2376 v19.03.3
myvm2 - virtualbox Running tcp://192.168.99.101:2376 v19.03.3
192.168.99.100
192.168.99.101
にアクセスすると、5つのコンテナのいずれかにアクセスします。
swarm を削除する
$ docker-machine ssh myvm2 "docker swarm leave"
$ docker-machine ssh myvm1 "docker swarm leave --force"