搭建基础环境
官方文档中演示时用到了五台主机/虚拟机;
这里因为资源有限,只用三台;
创建虚拟机(可以用主机,也可以用虚拟机);
安装Ubuntu 16.04 Server amd64系统(系统版本最好不要低于Ubuntu 14.04);
开启并配置ssh服务(方便操作);
安装Docker(仅作参考,也可以根据下面的步骤操作);
Docker Registry搭建私有仓库 和 批量上传镜像到私有仓库(非必需,便于镜像快速复用);
启用root用户登录及SSH远程连接(包含失败情况的解决);
配置节点
接下来的所有操作都是以root用户进行的。
升级软件包(操作对象:manager0,node0,node1
);
apt-get update && apt-get -y upgrade && apt-get -y install curl
安装Docker引擎(操作对象:manager0,node0,node1
);
curl -sSL https://get.docker.com/ | sh
配置并启动Docker引擎,令其监听Swarm节点的2375端口(操作对象:node0,node1
)
docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
配置发现后端(操作对象:manager0
)
前面已经列出了本次学习用到的三台主机的主机名以及其IP地址,下面的操作用到的IP也是这三个主机IP。
拉取镜像
docker pull progrium/consul
启动发现后端
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
创建Swarm集群
创建主管理员(操作对象:manager0
)
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 192.168.2.56:4000 consul://192.168.2.56:8500
因为这里的manager0既是主管理员又是发现服务后台,所以--advertise
和consul
的ip都是192.168.2.56
。
配置节点(操作对象:node0,node1
)
# 操作对象:node0(IP:192.168.2.77)
docker run -d swarm join --advertise 192.168.2.77:2375 consul://192.168.2.56:8500
# 操作对象:node1(IP:192.168.2.129)
docker run -d swarm join --advertise 192.168.2.129:2375 consul://192.168.2.56:8500
获取主管理员和各节点的信息(操作对象:manager0
):
docker -H :4000 info
使用集群
在集群中运行容器(操作对象:manager0
):
docker -H :4000 run hello-world
通过多次重复上面的操作出现了下面的结果,主管理员在两个节点上创建的容器的数量趋于相等(这里运行的容器是跑的一个core api demo,如果运行的是上面的指令,状态应该是Exited)。
主管理员操作节点的容器:
# 查看集群节点的容器列表
docker -H :4000 ps
# 删除容器
docker -H :4000 rm -f ContainerID
# 启/停容器
docker -H :4000 start/stop/restart ContainerID
与直接操作的区别就是docker
后面加了-H :4000
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。