官方文档中演示时用到了五台主机/虚拟机;node
这里由于资源有限,只用三台;docker
建立虚拟机(能够用主机,也能够用虚拟机);bootstrap
安装Ubuntu 16.04 Server amd64系统(系统版本最好不要低于Ubuntu 14.04);segmentfault
开启并配置ssh服务(方便操做);后端
安装Docker(仅做参考,也能够根据下面的步骤操做);api
Docker Registry搭建私有仓库 和 批量上传镜像到私有仓库(非必需,便于镜像快速复用);ssh
启用root用户登陆及SSH远程链接(包含失败状况的解决);curl
接下来的全部操做都是以root用户进行的。tcp
升级软件包(操做对象: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
建立主管理员(操做对象: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