参考: //www.greatytc.com/p/401b811be854
安装Docker: https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html
**测试环境
VMware master
ubuntu 18.04
docker 18.05.0-ce
docker-machine 0.14.0
VMware slave
ubuntu 18.04
docker 18.05.0-ce
1 搭建集群
1.1创建管理节点
docker swarm init --advertise-addr 192.168.64.55:2377
1.2 查看join token
docker swarm join-token manager
1.3创建slave
在节点机器运行上一步得到命令
docker swarm join --token XXX 192.168.45.129:2377
查看当前集群2 服务
2.1发布服务
#在manager上执行如下命令
# --replicas实例数
# --name <SERVICE-ID>
# --name后面跟docker image 及image参数
docker service create --replicas 1 --name helloBoy alpine ping bilibili.com
#使用docker service inspect审查服务
docker service inspect --pretty helloBoy
#使用docker service ps <SERVICE-ID>查看服务运行在哪个节点上
docker service ps helloBoy
#添加更多实例:docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>
docker service scale helloBoy=5
docker service ps helloBoy
#删除service
docker service rm helloBoy
2.2DRAIN节点
docker node update --availability drain daosub1
#查看服务,daosub1节点已停止服务
service ps helloBoy
#恢复节点
docker node update --availability active daosub1
drain应该可以用于故障排查,压测等情况;滚动升级没想到应用场景,忽略。
2.3
全局网络
#添加 overlay网络,让service和service之间可以通讯
#管理节点上,添加overlay网络my-network
docker network create --driver overlay my-network
#加--network参数,就可以让所有节点都加入这个网络里去了
docker service create --replicas 3 --publish 8080:80 --network my-network --name my-web nginx
注意:
a. 这时候访问slave节点,http://{slave}:8080/。master的8080是访问不了。
b. swarm是内置负载均衡,访问slave会均衡到所有节点上
3 Docker-machine
3.1创建
#设置处理器的虚拟化引擎首选模式为"Intel VT-x/EPT 或AMD-V/RVI"及"虚拟化Intel VT-x/EPT 或AMD-V/RVI(V)"
docker-machine create --driver virtualbox manager1
docker-machine ssh manager1
docker-machine create --driver virtualbox work1
#出现error “SSH cmd err, output: exit status 255:”
#加debug调试
docker-machine --debug create --driver virtualbox work3