パート4:群(Swarm)
Get Started, Part 4: Swarms | Docker Documentation の内容をやります。
1. スウォームとは
Dockerを実行していてクラスタに参加しているマシンのグループです。クラスタは swarm manager
によって管理されます。
スウォームに参加しているマシンは、物理マシン・仮想マシン両方の場合で、ノードとよばれます。スウォームマネージャーは、スウォーム内であなたのコマンドを実行できる唯一のマシンです。スウォームマネージャーは、他のマシンがスウォームにワーカーとして参加することも許可できます。ワーカーは、能力を提供するためだけに存在し、他のマシンに何ができるかできないかを伝える権限を持っていません。
~/H/docker2 ❯❯❯ docker swarm --help Usage: docker swarm COMMAND Manage Swarm Options: Commands: ca Display and rotate the root CA init Initialize a swarm join Join a swarm as a node and/or manager join-token Manage join tokens leave Leave the swarm unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm Run 'docker swarm COMMAND --help' for more information on a command.
2. スウォームを作成する
VMを作成する。
docker-machine コマンドを利用して、仮想マシンを2つ作成してみます。この動作には virtualbox が必要です。
docker-machine create --driver virtualbox myvm1 docker-machine create --driver virtualbox myvm2
こんな感じになります。
~/H/docker4 ❯❯❯ docker-machine create --driver virtualbox myvm1 Running pre-create checks... (myvm1) Default Boot2Docker ISO is out-of-date, downloading the latest release... (myvm1) Latest release for github.com/boot2docker/boot2docker is v18.05.0-ce (myvm1) Downloading /Users/satoru/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.05.0-ce/boot2docker.iso... (myvm1) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100% Creating machine... (myvm1) Copying /Users/satoru/.docker/machine/cache/boot2docker.iso to /Users/satoru/.docker/machine/machines/myvm1/boot2docker.iso... (myvm1) Creating VirtualBox VM... (myvm1) Creating SSH key... (myvm1) Starting the VM... (myvm1) Check network to re-create if needed... (myvm1) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env myvm1
Virtualbox の画面でも仮想マシンが作成されていますね。
VMのIPアドレスを確認する
~/H/docker4 ❯❯❯ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 - virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce
Swarm を初期化する
myvm1を swarm manager に指定します。
~/H/docker4 ❯❯❯ docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100" Swarm initialized: current node (ph13skaro0wq0010iau1jt5i5) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-2vquyyieen6whiz3pmtidp7a7q9mxzaxeiz4q7wszz0dgmiste-cnxryi4ktbxro2jzt68t9wb3o 192.168.99.100:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
myvm2 を ノードとして swarm に追加します。
~/H/docker4 ❯❯❯ docker-machine ssh myvm2 "docker swarm join --token SWMTKN-1-2vquyyieen6whiz3pmtidp7a7q9mxzaxeiz4q7wszz0dgmiste-cnxryi4ktbxro2jzt68t9wb3o 192.168.99.100:2377" This node joined a swarm as a worker. ~/H/docker4 ❯❯❯ docker-machine ssh myvm1 "docker node ls" ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION ph13skaro0wq0010iau1jt5i5 * myvm1 Ready Active Leader 18.05.0-ce xyqexicll5f17le0n4w5e6epu myvm2 Ready Active 18.05.0-ce
環境変数を確認します。
自分のローカルにmyvm1の環境変数を設定します。
~/H/docker4 ❯❯❯ eval $(docker-machine env myvm1) ~/H/docker4 ❯❯❯ env|ag DOCKER DOCKER_TLS_VERIFY=1 DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/me/.docker/machine/machines/myvm1 DOCKER_MACHINE_NAME=myvm1