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叩いたりしてみます。

    参考記事

    Docker Swarm モード にゅうもん
    Docker 1.12RC の swarm mode チュートリアル

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark