从零开始学习docker(十七)Swarm mode ---service
撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>
上一节中,我们学习了如何搭建一个swarm集群。本节中,我们介绍如何操作service。
service,大家应该不陌生,我们在之前讲过。一个service就对应一个container容器。我们之前使用docker compose时,一个service时部署在一台机器上面的。但是我们在swarm下面,我们创建一个service时,他可能会运行在我们cluster中的任何一个节点中去,下面详细介绍。
docker service 命令
docker service create 有点像docker run
在swarm下面,我们不适用docker run命令来运行容器。docker run表示在本地创建一个container。而service不一定运行在本地。所以在swarm下,一般不用docker run。
我们用创建一个service:
vincent@swarm-manager:~$ docker service create --name demo busybox sh -c "while true; do sleep 3600;done"
lf0wx1k2xz3l88mandyifkdm7
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged
查看service情况:
vincent@swarm-manager:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
lf0wx1k2xz3l demo replicated 1/1 busybox:latest
那么这个service运行在哪个节点上呢?
vincent@swarm-manager:~$ docker service ps demo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
hkgsjp3dswfh demo.1 busybox:latest swarm-worker-1 Ready Ready 3 seconds ago
说明运行在swarm-worker-1。
MODE replicated表示这个service是可以水平扩展的
如何扩展?
docker service scale demo=5
vincent@swarm-manager:~$ docker service scale demo=5
demo scaled to 5
overall progress: 5 out of 5 tasks
1/5: running
2/5: running
3/5: running
4/5: running
5/5: running
verify: Service converged
vincent@swarm-manager:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
lf0wx1k2xz3l demo replicated 5/5 busybox:latest
可以看到成功扩展了5个service。5/5表示:分母表示这个service的scale是多少,分子表示有多少个已经正常启动了。
vincent@swarm-manager:~$ docker service ps demo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
kvngsxo8q1jv demo.1 busybox:latest swarm-worker-2 Running Running 3 minutes ago
w9uw1zoncfki demo.2 busybox:latest swarm-worker-1 Running Running 2 minutes ago
sxsro5dzepjc demo.3 busybox:latest swarm-manager Running Running 2 minutes ago
klxhs3ec1j6c demo.4 busybox:latest swarm-manager Running Running 2 minutes ago
yxov6fzvwsyr demo.5 busybox:latest swarm-worker-2 Running Running 2 minutes ago
可以看到有两个service在swarm-worker-2节点上,有两个service在swarm-manager节点上,有一个在swarm-worker-1节点上。
我们去swarm-worker-1验证一下:
vincent@swarm-worker-1:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1644c316b53 busybox:latest "sh -c 'while true; …" 3 minutes ago Up 3 minutes demo.2.w9uw1zoncfkikb1iayit9mdba
有一个container。再去swarm-work-2验证一下:
vincent@swarm-worker-2:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0607b0aa4ad busybox:latest "sh -c 'while true; …" 4 minutes ago Up 4 minutes demo.5.yxov6fzvwsyrfue8q1redjyx9
9ccc6696214e busybox:latest "sh -c 'while true; …" 6 minutes ago Up 6 minutes demo.1.kvngsxo8q1jvd5mv6k9lcvxf1
有两个container。再去swarm-manager验证一下:
vincent@swarm-manager:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
128053167c33 busybox:latest "sh -c 'while true; …" 5 minutes ago Up 5 minutes demo.4.klxhs3ec1j6cek8914lk5mhdt
dd1dca1864dc busybox:latest "sh -c 'while true; …" 5 minutes ago Up 5 minutes demo.3.sxsro5dzepjc0mgs1phzz12ro
有两个container。
将service横向扩展5个以后,一切正常。
如果删除容器,会怎么样?
我们将swarm-worker-2中的一个容器删掉:
vincent@swarm-worker-2:~$ docker rm -f 9ccc6696214e
9ccc6696214e
然后早swarm-maganger上查看:
vincent@swarm-manager:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
lf0wx1k2xz3l demo replicated 5/5 busybox:latest
发现还是5个。但是这已经不是之前的5个容器了。
vincent@swarm-manager:~$ docker service ps demo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
vq4lgu31i4bn demo.1 busybox:latest swarm-worker-1 Running Running 3 minutes ago
kvngsxo8q1jv \_ demo.1 busybox:latest swarm-worker-2 Shutdown Failed 3 minutes ago "task: non-zero exit (137)"
w9uw1zoncfki demo.2 busybox:latest swarm-worker-1 Running Running 10 minutes ago
sxsro5dzepjc demo.3 busybox:latest swarm-manager Running Running 10 minutes ago
klxhs3ec1j6c demo.4 busybox:latest swarm-manager Running Running 10 minutes ago
yxov6fzvwsyr demo.5 busybox:latest swarm-worker-2 Running Running 10 minutes ago
可以看到,我们在swarm-worker-2上的一个容器已经shutdown了,但是在swarm-worker-1上重新启动了一个。因此swarm-worker-1上有两个container。
因此,swarm不仅保证可以横向扩展,而且还保证一定数目的有效的。
当swarm发现scale中的部分节点上的service失效,那么他会通过cluster的任一节点上重启一个,达到scale。可以确保系统是有效稳定的。
docker service rm demo
可以删除demo.
vincent@swarm-manager:~$ docker service rm demo
demo
从零开始学习docker(十七)Swarm mode ---service相关推荐
- 从零开始学习docker(十五)Swarm mode 介绍
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 一般情况下,我们都在一台机器下部署容器,但实际情况下,应用如果只在一台机器上无法满足我们的需求,包含的容器比较多 ...
- [297]从零开始学习Docker
这篇文章是我学习 Docker 的记录,大部分内容摘抄自 <<Docker - 从入门到实践>> 一书,并非本人原创. 学习过程中整理成适合我自己的笔记,其中也包含了我自己的实 ...
- 从零开始学习docker(二十一)service管理
本节我们介绍如何以方便的方式管理service. 我们之前提到docker-compose,适用于本地开发,可以在本机部署,提供了很大的便利.而swarm是一个cluster,可不可以通过docker ...
- 从零开始学习docker(十九)Swarm mode 集群服务间通信--RoutingMesh
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 在上一节中,我们介绍了通过service create部署了wordpress和mysql,我们发现了几个问题: ...
- 从零开始学习docker(十八)Swarm mode 部署wordpress
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 本次我们部署一个稍微负复杂的application--wordpress. 之前我们使用docker run分别 ...
- 从零开始学习docker(十六)Swarm mode 创建集群
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 这一节我们介绍如何搭建一个三节点的swarm集群.安装docker的同时,swarm已经内置了.所以不需要额外安 ...
- 从零开始学习docker(二十)RoutingMesh--Ingress负载均衡
我们知道容器之间的通信,例如上图中的10.0.9.3与10.0.9.5通信是通过overlay网络,是通过一个VXLAN tannel来实现的. 但是service和service之间通信是通过VIP ...
- 从零开始学习docker(十三)Docker Compose--scale
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 环境准备,上一节中的flask-redis项目,将项目启动: docker-compose up -d Star ...
- 从零开始学习docker(十二)介绍Docker Compose基本使用
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 默认情况下在mac或者Windows安装docker的时候会自动安装docker-compose.对于Linux ...
最新文章
- HTML 表单(form) 使用详解
- python_魔法方法(六):迭代器和生成器
- 众望所归!中国机器狗能【后空翻】了。。。
- 机器学习面试--决策树
- 微信小程序 访问locolhost_微信小程序开发——本地调试
- web-----简单小游戏项目
- comsol仿真模型:风力发电机复合材料叶片的应力和模态分析
- 微信小程序开发之组件view,scroll-view,swiper,text,rich-text,button,image,navigator
- php重构求圆柱圆锥的体积,六年级数学下册2.8 圆锥的体积教案 (新版)苏教版...
- Android Studio 设置背景色、修改前进后退快捷键
- 星巴克急了,瑞幸就稳了?
- memcached 源码分析
- 3238: [Ahoi2013]差异
- js将php时间戳转换成格式化日期
- python疲劳检测代码_【君奉天|开发日记】疲劳驾驶检测
- 计算机在英语写作中应用,计算机技术在英语写作教学中的应用研究
- Matlab一元一次函数拟合及显著性检验
- Golang实现并发版网络爬虫:豆瓣-电影名人数评分爬取并保存文件
- Android图片的三级缓存
- AE/PR脚本模板-110个可爱卡通手绘涂鸦图形动画预设
热门文章
- RequiredFieldValidator 根据group组来触发验证
- python与java、php、go的优势对比
- php如何获取上传文件的后缀?
- mysql 数据库存储表情
- 优化案例 | CASE WHEN进行SQL改写优化
- cad蜂鸟工具_蜂鸟视图地图数据中台,全面提升商业地产的可视化信息管控
- 压缩比13为什么建议用92的油_92号和95号汽油,哪个更耐烧?车主:欢迎入坑
- 数字旅游解决方案_迪庆州首个数字旅游小镇5G基站在巴拉格宗开通
- .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?
- basler相机 ip linux,Linux环境中连接Basler相机(Pylon软件的安装),ROS环境中连接Basler相机...