Swarm创建docker集群:服务发现-配置文件法

时间:2021-02-24 18:15:51
  • 本文不详细介绍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节点。

至此,swarm已经实验完成