Vagrant内でDocker 1.12 の Swarm Modeを試してみる(環境構築)
Vgrantfileを作成する Swarm Modeのために複数台のサーバを用意したいので、Vagrantfileにそのようにコードを書いていきます。 Vagrantfile とりあえずUbuntuで3台立ち上げることに […]
広告ここから
広告ここまで
目次
Vgrantfileを作成する
Swarm Modeのために複数台のサーバを用意したいので、Vagrantfileにそのようにコードを書いていきます。
Vagrantfile
とりあえずUbuntuで3台立ち上げることにしました。
Ansibleでプロビジョンさせようかと思ったのですが、今回の本筋じゃないのでシェルにしてます。
複数台のプロビジョンやるときはpathパラメータ使うと同じシェルを走らせれます。
VAGRANTFILE_API_VERSION = "2" Vagrant.configure( VAGRANTFILE_API_VERSION ) do | config | config.vm.define "docker_host1" do |vagrant1| vagrant1.vm.box = "ubuntu/trusty64" vagrant1.vm.box_check_update = true vagrant1.vm.network "private_network", ip: "192.168.33.70" vagrant1.vm.provision "shell", path: "setup.sh" end config.vm.define "docker_host2" do |vagrant2| vagrant2.vm.box = "ubuntu/trusty64" vagrant2.vm.box_check_update = true vagrant2.vm.network "private_network", ip: "192.168.33.80" vagrant2.vm.provision "shell", path: "setup.sh" end config.vm.define "docker_host3" do |vagrant3| vagrant3.vm.box = "ubuntu/trusty64" vagrant3.vm.box_check_update = true vagrant3.vm.network "private_network", ip: "192.168.33.90" vagrant3.vm.provision "shell", path: "setup.sh" end end
setup.sh
こちらはprovision用のShell。3行目でvagrantユーザーがdockerコマンドを実行できるようにしてます。
#!/bin/bash sudo curl -fsSL https://test.docker.com/ | sh sudo gpasswd -a vagrant docker
VM立ち上げ -> Swarm Mode起動
$ vagrant up $ vagrant ssh docker_host1 //Docker Swarm Modeを起動 $ docker swarm init --advertise-addr 192.168.33.70 --listen-addr 0.0.0.0 Swarm initialized: current node (a8XXXXXXXXXXXXXXXXXXXXd) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-5zXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2u-45XXXXXXXXXXXXXXX44499 \ 192.168.33.70:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. $ exit // docker_host2をworkerに追加 $ vagrant ssh docker_host2 $ docker swarm join \ --token SWMTKN-1-5zXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2u-45XXXXXXXXXXXXXXX44499 \ 192.168.33.70:2377 $ exit // docker_host3をworkerに追加 $ vagrant ssh docker_host3 $ docker swarm join \ --token SWMTKN-1-5zXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2u-45XXXXXXXXXXXXXXX44499 \ 192.168.33.70:2377
動作確認
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 2XXXXXXXXXXXXXXXXXXXXXXXg vagrant-ubuntu-trusty-64 Ready Active aXXXXXXXXXXXXXXXXXXXXXXXd * vagrant-ubuntu-trusty-64 Ready Active Leader dXXXXXXXXXXXXXXXXXXXXXXXk vagrant-ubuntu-trusty-64 Ready Active
とりあえずクラスタを組めたっぽいので、サービスを動かしたりRemote API叩いたりしてみます。