Docker swarm 实践思考
来源:互联网 发布:c语言工资计算系统 编辑:程序博客网 时间:2024/06/05 07:14
Main Reference:https://marshal.ohtly.com/2016/12/19/create-simple-service-with-docker-swarm-mode/
创建Swarm
上面创建了3个节点。计划让:
t1
作为manager
节点,swarm
的操作命令只能在manager
节点上执行t2
和t3
作为worker
节点
可通过docker-machine
的ssh
命令无需密码登录到t1
节点:
1
docker-machine ssh t1
在t1
节点创建swarm:
1
docker swarm init --advertise-addr 192.168.99.100
执行后会输出类似这样的结果:
123
docker swarm join \--token SWMTKN-1-04e9uir3hzkfvog5r3idnanic1e3en3ffdtizrqondf9flus0e-46akedpdhu9upa6nmw7q6fusm \192.168.99.100:2377
退出t1
,再次通过docker-machine ssh
命令登录到t2
和t3
,执行上述命令加入到t1
创建的swarm中,即:
123
docker swarm join \--token SWMTKN-1-04e9uir3hzkfvog5r3idnanic1e3en3ffdtizrqondf9flus0e-46akedpdhu9upa6nmw7q6fusm \192.168.99.100:2377
然后,再次登录t1
,可通过如下命令查看swarm加入的情况:
12345
docker@t1:~$ docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUS0vbcfw1f5ozy74yy1wzkdgqlz t3 Ready Active4muoqgiwxig9y4xks6ua8ssf5 * t1 Ready Active Leader65h5he04on3n93o250fcs1nuo t2 Ready Active
创建服务
在t1
节点,执行命令创建服务:
1
docker service create -p 3000:3000 --name hello-service marshalw/hello-service:0.1.0
这个命令类似docker的run命令:
1
docker run -d -p 3000:3000 marshalw/hello-service
区别是,docker run
命令只在当前docker服务器上创建容器,docker service create
将在创建的swarm中创建容器。上面创建服务的命令只跑了1个服务实例:
123
$ docker service lsID NAME REPLICAS IMAGE COMMAND2itleggpnm14 hello-service 1/1 marshalw/hello-service
虽然服务只部署在swarm其中一个节点,但无论访问其中哪个节点,都可获得服务:
123456
$ curl http://192.168.99.100:3000/hello/name{"status":"OK"}$ curl http://192.168.99.101:3000/hello/name{"status":"OK"}$ curl http://192.168.99.102:3000/hello/name{"status":"OK"}
原因是未部署服务的节点会自动转发请求到服务所在的节点上去。
改变服务的实例数
下面命令将目前1个实例数改为3个:
1
docker service scale hello-service=3
可以通过docker service ps
命令查看具体节点上服务的状态:
12345
$ docker service ps hello-serviceID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERRORcls3ozabbapthazz670s3psof hello-service.1 marshalw/hello-service t1 Running Shutdown 6 minutes ago6jut42y57l6z7awuz9ylmk2bf hello-service.2 marshalw/hello-service t2 Running Running 6 minutes ago8ou2s46wvibm7wc74mncrvkax hello-service.3 marshalw/hello-service t3 Running Shutdown 6 minutes ago
当服务实例失效后swarm自动创建新服务实例
执行:
1
docker service scale hello-service=2
让当前实例数为2。
执行:
12345
$ docker service ps hello-serviceID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR2hx76y324601nzh4oroozyykx hello-service.1 marshalw/hello-service t3 Running Running 42 seconds ago6jut42y57l6z7awuz9ylmk2bf hello-service.2 marshalw/hello-service t2 Running Running 9 minutes ago...
发现t2
和t3
上有部署服务,停掉t3
节点:
1
docker-machine stop t3
然后在t1
上执行:
123
$ docker service lsID NAME REPLICAS IMAGE COMMAND2itleggpnm14 hello-service 2/2 marshalw/hello-service
发现运行的服务实例还是2个,说明swarm的自动创建新服务实例功能是有效的。
Docker Swarm 相關問題
我的 Docker 版本是 1.12,請問我跑的是一代 Swarm 還是二代 Swarm 啊?
……自己運行的 Swarm 怎麼會連自己都不知道跑的是啥?
阅读全文
0 0
- Docker swarm 实践思考
- docker swarm实践
- Docker Swarm架构、特性与基本实践
- Docker Swarm架构、特性与基本实践
- Docker Swarm
- Docker Swarm
- docker swarm
- Docker Swarm
- Docker Swarm集群实践——部署篇
- Docker Swarm集群实践——管理篇
- 阿里云上搭建Docker Swarm模式集群最佳实践
- DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路
- [docker]swarm初探
- docker swarm集群搭建
- 1.0.4、Docker Swarm
- Docker Swarm Overview
- Docker Swarm学习教程
- Docker swarm cluster 搭建
- C++ 静态链接库与动态链接库
- nexus的安装和数据迁移
- react-router使用总结
- MySQL UNION 操作符
- Unity中的mip map
- Docker swarm 实践思考
- 栈和队列——用两个栈实现一个队列
- Putty连阿里云CentOS7.3服务器总是掉线的解决方法
- 给你一个原汁原味的Retrofit2+Rxjava2的请求封装
- Servlet生命周期
- 【转】漫谈Moq(三)
- JDT AST学习笔记
- php无限极分类
- 遮罩层不能覆盖导航条