早就知道docker1.12有很大的改变,仰慕也是很久了,十一期间,抽了点时间(其他时间都在玩)根据官方文档试了下,还是挺好玩的,很多功能也很实用(服务发现、自动伸缩等),下面就是我的操作步奏,大家一起来看看
首先,开放如下端口:
TCP 2377 集群管理节点通信的端口
TCP & UDP 7946 集群节点通信的端口
TCP & UDP 4789 overlay 网络通信端口
firewall-cmd --permanent --add-port={2377/tcp,2377/udp,7946/tcp,7946/udp,4789/tcp,4789/udp}
firewall-cmd --reload
firewall-cmd --list-all
启动集群
# 主节点
docker swarm init --advertise-addr 192.168.11.33
# 子节点
docker swarm join \
--token SWMTKN-1-51w1r44gg7n392k4eti1i52zrbhwjwkmmqoe2zugtur483rdyb-9yb9ucnj23xc0k49sh7cddge3 \
192.168.11.33:2377
在swarm中部署一个服务
# 创建服务
docker service create --replicas 1 --name helloworld alpine ping docker.com
# 查看服务
docker service ls
# 使用inspect查看服务
docker service inspect --pretty helloworld
# 使用inspect查看服务的详细信息
docker service inspect helloworld
# 查看服务在各个节点上运行的信息
docker service ps helloworld
在swarm中均衡服务
# 将helloworld节点拓展到5个
docker service scale helloworld=5
# 查看服务在节点上的运行信息
docker service ps helloworld
删除swarm中的服务
# 删除服务
docker service rm helloworld
# 查询服务状态
docker service ps helloworld
# 或者
docker service inspect helloworld
滚动更新swarm中的服务
–update-delay 表示延迟多少时间更新,1s表示1秒,1m表示1分钟,1h表示一小时,10m30s表示10分30秒
–replicas 3 表示3份服务
# 启动服务
docker service create --replicas 3 --name redis --update-delay 10s redis:3.2.3-alpine
# 查看服务
docker service inspect --pretty redis
docker service ps redis
# 更新服务
docker service update --image redis:3.2.4-alpine redis
# 查看服务状态
docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
bfwxlnus32ujz14kinwh72ahy redis.1 redis:3.2.4-alpine node-34 Running Running 5 minutes ago
3esh91crtjqbwwc07ym3jnvt6 \_ redis.1 redis:3.2.3-alpine node-34 Shutdown Shutdown 5 minutes ago
59mrs5b2ezx4e507l9o2o9fju redis.2 redis:3.2.4-alpine node-34 Running Running 5 minutes ago
6g742e4innpgkd7cmengbhrfv \_ redis.2 redis:3.2.3-alpine node-33 Shutdown Shutdown 5 minutes ago
cosw8s7bzaa4uqkryhzoegv43 redis.3 redis:3.2.4-alpine node-33 Running Running 4 minutes ago
cecz63fox72359hye54in7vco \_ redis.3 redis:3.2.3-alpine node-33 Shutdown Shutdown 4 minutes ago
# 删除服务
docker service rm redis
排除一个节点
# 启动服务
docker service create --replicas 3 --name redis --update-delay 10s redis:3.2.3-alpine
# drain启动服务
docker node update --availability drain node-34
# 查看服务状态
docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
cemacmh9s21nojcbhrrsheksx redis.1 redis:3.2.3-alpine node-33 Running Preparing 7 seconds ago
ae3z7j70914ul8xk1m3fxlzc3 \_ redis.1 redis:3.2.3-alpine node-34 Shutdown Shutdown 5 seconds ago
5436gxjv0kuvua7spf4y8beg0 redis.2 redis:3.2.3-alpine node-33 Running Running 7 minutes ago
aublwl8ma1htydcffai73no66 redis.3 redis:3.2.3-alpine node-33 Running Running 7 minutes ago
# 查看node-34的节点状态
docker node inspect --pretty node-34
ID: 41plo41mur0ec50agvh2pfswa
Hostname: node-34
Joined at: 2016-10-02 07:53:32.92200565 +0000 utc
Status:
State: Ready
Availability: Drain
Platform:
Operating System: linux
Architecture: x86_64
Resources:
CPUs: 1
Memory: 977.9 MiB
Plugins:
Network: bridge, host, null, overlay
Volume: local
Engine Version: 1.12.1
# 恢复节点
docker node update --availability active node-34
# 查看节点状态
docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
cemacmh9s21nojcbhrrsheksx redis.1 redis:3.2.3-alpine node-33 Running Running 7 minutes ago
ae3z7j70914ul8xk1m3fxlzc3 \_ redis.1 redis:3.2.3-alpine node-34 Shutdown Shutdown 8 minutes ago
5436gxjv0kuvua7spf4y8beg0 redis.2 redis:3.2.3-alpine node-33 Running Running 15 minutes ago
aublwl8ma1htydcffai73no66 redis.3 redis:3.2.3-alpine node-33 Running Running 15 minutes ago
总结(摘自《Docker 1.12迎来内置编排机制》)
- 简单但强大:编排可谓现代分布式应用的核心所在;其如此重要,意味着我们必须以无缝化方式将其内置于核心Docker Engine当中。我们的编排方案遵循了容器设计理念,即无设置过程、只需学习少数简单概念且提供“还算不错”的使用体验。
- 弹性:设备时刻可能发生故障。对于现代系统而言,采用无单点故障设计以确保故障出现时不会导致应用停机已经成为一种必要。
- 安全性:安全性又是另一项默认要求。一切可能有碍安全性的因素,包括证书生成以及了解PKI等,都需要被移除。不过高级用户仍然能够从细处着手,更为全面地实现控制与审计。
- 可选功能与向下兼容性:作为拥有数百万用户的解决方案,向下兼容性是Docker Engine必须具备的能力。所有新功能以可选方式提供,大家可根据需要选择并为其分配对应的日常运行资源(内存与CPU等)。Docker Engine内的编排机制就像是我们这套平台内置的电池,但允许用户随意更换为使用其它第三方编排方案。
by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn
OpenBI问答社区:http://openbi.liuyingguang.cn/