1. 程式人生 > >Docker學習筆記(七)-如何建立docker swarm

Docker學習筆記(七)-如何建立docker swarm

建立docker swarm

此處總結官網的文件,但是官網的這一小節,寫得不完善,官網沒有介紹如何建立節點的machine,需要查詢以前的文件才方便學習,官網最好在文件中給出相關的連結,但沒有,此博文進行補充一下。

Prerequisite

  1. 3個能夠聯網的主機(manager1, worker1, worker2)可以是virtual machine, data center, a cloud service provider等
  2. 主機中的docker 版本1.12 or later.
  3. manager machine的IP地址
  4. 主機間的open ports

步驟

STEP1. 建立manager1節點

(1)先建立這個machine

$ sudo docker-machine create --driver virtualbox manager1

應該得到類似如下輸出:

[email protected]:~$ sudo docker-machine create --driver virtualbox manager1
[sudo] password for mingchen: 
Running pre-create checks...
(manager1) You are using version 4.3.36_Ubuntur105129 of VirtualBox. If
you encounter issues, you might want to upgrade to version 5 at https://www.virtualbox.org Creating machine... (manager1) Copying /home/mingchen/.docker/machine/cache/boot2docker.iso to /home/mingchen/.docker/machine/machines/manager1/boot2docker.iso... (manager1) Creating VirtualBox VM... (manager1) Creating SSH key
... (manager1) Starting the VM... (manager1) Check network to re-create if needed... (manager1) 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 manager1 [email protected]:~$ sudo docker-machine ssh manager1 ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.13.0, build HEAD : 5b8d9cb - Wed Jan 18 18:50:40 UTC 2017 Docker version 1.13.0, build 49bf474 [email protected]:~$

(2)以ssh方式登入該machine
這個步驟是下次在新窗口才需要使用的,因為第一步建立完後,已經進入了machine,[email protected]:~$
若是在新的終端視窗,則:

 $ sudo docker-machine ssh manager1  

已經登入了的話,則不必進行上面的操作。
(3)新增manager1為該swarm為主節點
依據

docker swarm init --advertise-addr <MANAGER-IP>

<MANAGER-IP>換成manager1主機IP

docker@manager1:~$ docker swarm init --advertise-addr 192.168.99.101

得到如下輸出

Swarm initialized: current node (qf12wwq4i3gjv4gnhiuetqiy5) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-4hggsl45lcdtn8wd8m5y5qb4yek2c1ztj6tibkrsxe8lb8nyt2-07l8c6ke7ba6n4g235vgwdgi3 \
    192.168.99.101:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

[email protected]:~$

上面的輸出中,包含了怎麼新增worker和manager。不過,新增的操作是在另外的終端machine上進行的。

STEP2. 建立/新增worker1節點

(1)用類似於STEP1中的方法,在另外的新終端視窗建立worker1的節點machine.

mingchen@mingchen-HP:~$ sudo docker-machine creat --driver virtualbox worker1

(2)ssh登入

mingchen@mingchen-HP:~$ sudo docker-machine ssh worker1
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.13.0, build HEAD : 5b8d9cb - Wed Jan 18 18:50:40 UTC 2017
Docker version 1.13.0, build 49bf474
[email protected]:~$

(3)把worker1節點新增進以manager1為MANAGER的swarm

docker@worker1:~$  docker swarm join \
>     --token SWMTKN-1-4hggsl45lcdtn8wd8m5y5qb4yek2c1ztj6tibkrsxe8lb8nyt2-07l8c6
ke7ba6n4g235vgwdgi3 \
>     192.168.99.101:2377
This node joined a swarm as a worker.
docker@worker1:~$ 

STEP3. 建立/新增worker2節點

與STEP2基本一樣。

STEP4. 在manager1的終端檢視節點資訊

輸入docker node ls

docker@manager1:~$ docker node ls

這裡寫圖片描述

在MANAGER的縱列leader為manager1
運用類似的辦法可以新增更多的節點。