搭建基础环境
官方文档中演示时用到了五台主机/虚拟机;
这里因为资源有限,只用三台;
(可以用主机,也可以用虚拟机);
(系统版本最好不要低于Ubuntu 14.04);
(方便操作);
(仅作参考,也可以根据下面的步骤操作);
和 (非必需,便于镜像快速复用);
(包含失败情况的解决);
配置节点
接下来的所有操作都是以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