Lighting@刘迎光
相信了,才有可能遇见,不相信,也许只会是擦肩而过!
Toggle navigation
Lighting@刘迎光
首页
IT技术
微服务(IT)
技术问答
OpenBI
读书笔记
公众号【今日脑图】
关于我
自媒体
归档
标签
Docker 1.12.1实践操作记录
Docker
swarm
容器
2017-03-26 21:24:06
760
lightingfire
Docker
swarm
容器
早就知道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迎来内置编排机制》](http://dockone.io/article/1442?utm_source=tuicool&utm_medium=referral)) 1. 简单但强大:编排可谓现代分布式应用的核心所在;其如此重要,意味着我们必须以无缝化方式将其内置于核心Docker Engine当中。我们的编排方案遵循了容器设计理念,即无设置过程、只需学习少数简单概念且提供“还算不错”的使用体验。 2. 弹性:设备时刻可能发生故障。对于现代系统而言,采用无单点故障设计以确保故障出现时不会导致应用停机已经成为一种必要。 3. 安全性:安全性又是另一项默认要求。一切可能有碍安全性的因素,包括证书生成以及了解PKI等,都需要被移除。不过高级用户仍然能够从细处着手,更为全面地实现控制与审计。 4. 可选功能与向下兼容性:作为拥有数百万用户的解决方案,向下兼容性是Docker Engine必须具备的能力。所有新功能以可选方式提供,大家可根据需要选择并为其分配对应的日常运行资源(内存与CPU等)。Docker Engine内的编排机制就像是我们这套平台内置的电池,但允许用户随意更换为使用其它第三方编排方案。 --- > by 刘迎光@萤火虫工作室 > OpenBI交流群:495266201 > MicroService 微服务交流群:217722918 > mail: liuyg#liuyingguang.cn > 博主首页(==防止爬虫==):http://blog.liuyingguang.cn > OpenBI问答社区:http://openbi.liuyingguang.cn/
Pre:
CentOS7 设置docker 的Storage Driver为overlay
Next:
K8S对node添加label,并根据label筛选节点
Table of content