- 本文不详细介绍swarm、docker的原理、架构,主要记录Centos7上安装docker、swarm构建docker集群的步骤。
- 安装swarm有两种方式:(1)通过docker官方获取token-id(2)配置文件中配置节点。由于方法1需要访问外网,所以对内网环境有局限性。
环境
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# docker --version
Docker version 1.8.2-el7.centos, build a01dc02/1.8.2
[root@localhost ~]#
- 本文只通过1个docker节点组成swarm+docker集群进行实验。
Docker安装&配置
请参考docker安装&配置
swarm配置文件
echo "[docker_ip]:[docker_port]" >> /your/path/cluster
- 将
[docker_ip]
换成要加入docker集群的节点ip,将[docker_port]
换成上面配置的端口,例如2375. 将
/your/path/cluster
换成配置文件的位置。例如/root/cluster。可以重复此步骤将多个节点添加到集群中。或者直接按照这种格式编辑cluster文件。
安装&启动swarm
说明:docker官方提供了swarm的镜像,目前的swarm安装过程均是下载swarm镜像并启动。
- 下载swarm镜像:
docker pull swarm
docker run –d –p [swarm_port]:2375 –v /your/path/cluster:/tmp/cluster --privileged=true swarm manage file:///tmp/cluster
- 启动swarm:将上面命令中
/your/path/cluster
替换成自己的配置文件位置。例如/root/cluster - 将[swarm_port]换成swarm的ip(未被占用即可),例如:2376
- 命令中的2375不需要替换,因为swarm镜像默认expose了2375端口。
验证
- 通过swarm查看节点
docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
- 可以看到如下内容:
[root@localhost ~]# docker run --rm=true --privileged=true -v /root/cluster:/tmp/cluster docker.io/swarm list file:///tmp/cluster
192.168.1.65:2375
[root@localhost ~]#
- 通过docker查看节点.
- 将
swarm_ip
换成swarm所在的节点的ip。 - 将
swarm_port
换成swarm的端口,例如2376.
docker -H [swarm_ip]:[swarm_port] info
- 可以看到如下内容:
[root@localhost ~]# docker -H 192.168.1.65:2376 info
Containers: 1
Images: 1
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
localhost.localdomain: 192.168.1.65:2375
└ Status: Healthy
└ Conttainers: 1
└ Reserved CPUs: 0 / 8
└ Reserved Memory: 0 B / 32.79 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.10.0-229.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
CPUs: 8
Total Memory: 32.79 GiB
Name: 5ae8d49987cf
[root@localhost ~]#
- 上例中docker节点只有1个,且与swarm在同一个host机中。
集群中创建容器
创建两个容器:执行2次docker run busybox
。
通过docker -H [swarm_ip]:[swarm_port] ps -a
可以看到swarm中创建的docker容器.
通过docker ps -a
可以看到在本机上也有两个容器。
因为该示例中有1个docker节点,所以2个容器都在1个docker节点上。如果有2个docker节点,可以看到2个容器分布在不同的docker节点。