版权声明:本文系作者原创。未经许可,不得转载。
操作系统:Ubuntu 16.04 LTS
swarm manager: 192.168.2.46 swarm集群的管理机, 简称管理机
swarm node1: 192.168.2.47 swarm集群的节点机1, 简称节点机1
swarm node2: 192.168.2.48 swarm集群的节点机2, 简称节点机2
swarm node3: 192.168.2.49 swarm集群的节点机3, 简称节点机3
注意: 必须确保节点机的hostname不相同。
一、安装docker
1、添加gpg公钥
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys F76221572C52609D
2、添加docker源
$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-xenial main > /etc/apt/sources.list.d/docker.list"
3、更新并安装
$sudo apt update
$sudo apt install docker-engine
4、查看docker版本,检查是否正确安装
$docker --version
显示如下信息,说明安装正确。版本号会有不同。
Docker version 1.11.1, build 5604cbe
5、配置docker并重启
把集群中所有的节点的 docker daemon 的监听方式更改为0.0.0.0:2375。
$sudo vim /lib/systemd/system/docker.service
修改ExecStart项为如下:
ExecStart=/usr/bin/docker daemon -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
重新载入配置,使修改生效。
$sudo systemctl daemon-reload
重启docker。
$sudo systemctl restart docker
查看是否修改成功。
$ps aux | grep "docker"
出现如下信息,表明修改成功。
root 2854 2.8 0.1 561364 38104 ? Ssl 19:15 0:00 /usr/bin/docker daemon -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
二、安装swarm
1、拉取swarm镜像
$ docker pull swarm
显示如下信息,说明拉取成功。(查看最后一行)
Using default tag: latest
latest: Pulling from library/swarm
dd2ca02feeef: Pull complete
8e8ea52d4475: Pull complete
397cd9ffad59: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:69363272443f4080e0623e78ced41bf38273535ee7f422b26bbc555db2b5d4a4
Status: Downloaded newer image for swarm:latest
三、搭建集群
1、创建集群token
在任何一台机器上执行,获取全球唯一的 token,作为集群唯一标识。
$docker run --rm swarm create
ae44ab899a758522cf267c0e7904f4ab
记住这个token。
2、加入集群
在节点机1上执行:
$docker run -d swarm join -addr=192.168.2.47:2375 token://ae44ab899a758522cf267c0e7904f4ab
在节点机2上执行:
$docker run -d swarm join -addr=192.168.2.48:2375 token://ae44ab899a758522cf267c0e7904f4ab
在节点机3上执行:
$docker run -d swarm join -addr=192.168.2.49:2375 token://ae44ab899a758522cf267c0e7904f4ab
3、启动管理机
在管理机上执行:
$docker run -d -p 2376:2375 swarm manage token://ae44ab899a758522cf267c0e7904f4ab
4、确认集群搭建是否成功
在管理机上执行:
$docker ps -a
显示如下信息,表明管理机启动成功。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f34818bb03f swarm "/swarm manage token:" 2 minutes ago Up 2 minutes 0.0.0.0:2376->2375/tcp backstabbing_goldberg
在节点机上执行:
$docker ps -a
显示如下信息,表明节点机启动成功。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d0104264c0f3 swarm "/swarm join -addr=19" 5 minutes ago Up 5 minutes 2375/tcp jovial_lumiere
查看集群所有节点信息。在任何一台机器上执行:
$docker run --rm swarm list token://ae44ab899a758522cf267c0e7904f4ab
显示如下信息,表明集群创建成功。
192.168.2.49:2375
192.168.2.48:2375
192.168.2.47:2375
查看集群详细信息。在任何一台机器上执行:
$docker -H 192.168.2.46:2376 info
显示如下信息:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 3
Server Version: swarm/1.2.1
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 3
docker006: 192.168.2.47:2375
└ ID: 2LQB:JOJN:NOJ6:2EDA:WEZL:RZZ7:J4Z5:IWKD:HAO4:PHIO:SS67:6N6M
└ Status: Healthy
└ Containers: 1
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 20.59 GiB
└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-05-06T11:28:06Z
└ ServerVersion: 1.11.1
docker007: 192.168.2.48:2375
└ ID: FDND:TTAN:2LPV:D2EW:R4AQ:7VWV:CLBX:7MWH:2553:XCK7:Z26X:T4JK
└ Status: Healthy
└ Containers: 1
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 20.59 GiB
└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-05-06T11:28:20Z
└ ServerVersion: 1.11.1
docker008: 192.168.2.49:2375
└ ID: HRVI:Y7NS:ZKAX:3EP3:REQR:YKTM:BDYD:76OK:WMCI:MCX7:4C3C:64JA
└ Status: Healthy
└ Containers: 1
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 20.59 GiB
└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-05-06T11:28:22Z
└ ServerVersion: 1.11.1
Plugins:
Volume:
Network:
Kernel Version: 4.4.0-21-generic
Operating System: linux
Architecture: amd64
CPUs: 12
Total Memory: 61.77 GiB
Name: 2f34818bb03f
Docker Root Dir:
Debug mode (client): false
Debug mode (server): false
WARNING: No kernel memory limit support
解读:有三个节点。列出了每个节点名、配置信息等。
至此,在ubuntu16.04上,通过swarm搭建docker集群完成!
四、参考资料
1、https://docs.docker.com/engine/admin/systemd/
2、https://yeasy.gitbooks.io/docker_practice/content/swarm/usage.html
3、https://blog.docker.com/2015/07/new-apt-and-yum-repos/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。