赞
踩
Docker是个伟大的项目,它彻底释放了虚拟化的威力,让应用的分发、部署和管理都变得前所未有的高效和轻松!
如果你正在为以下问题困扰,就可以考虑使用Docker来对整个工程进行重构。
资源利用率问题
不同业务场景对资源的需求是不-样的,有CPU密集型、内存密集型、网络密集型,这就可能导致资源利用率不合理的问题。在大多数的企业中,我们经常能够看到服务器的资源闲置率非常高,而开发团队却经常面临无机器可用的情况。
混合部署交叉
影响对于线上服务,一台机器要混合部署多个服务,那么服务之间可能存在相互影响的情况。比如端口的冲突,CPU及内存的共同使用等问题,都有可能造成服务之间的冲突,从而导致莫名的问题。
扩/缩容效率低
当业务节点需要进行扩/缩容时,从机器下线到应用部署、测试,周期较长。当业务遇到突发流量高峰时,增加设备并部署后,可能流量高峰已经过去了。这些本身与设计无关,即使接口应用已经设计成无状态的,但是想要做扩容也是-件非常麻烦的事。
多环境代码不一致
大部分公司都会有由于过去内部开发流程的不规范而存在一些问题,业务提测的代码在测试环境测试完毕后,在线上部署时可能会进行修改、调整,然后打包上线。这就会导致测试的代码和线上运行的代码是不一致的,增加了服务上线的风险,也增加了线上服务故障排查的难度。
缺少稳定的线下测试环境
在测试过程中,会遇到一个问题,服务依赖的其他下游服务都没有提供稳定的测试环境,导致无法在测试环境模拟整个线上流程进行测试。所以有时候会用线上服务进行测试,这本身就存在着很高的潜在风险。一旦操作失误,就有可能造成不可估量的损失。
而Docker的出现在很大程度上解决了这些问题,那么我们一起来认识一下Docker 吧。
Docker是一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、 可移植的、自给自足的容器。开发者在笔记本电脑上编译测试通过的容器可以批量地在生产环境中部署,包括VMs (虚拟机)、bare metal、OpenStack 集群和其他基础应用平台。
Docker的目标:
提供轻量简单的建模方式;
职责的逻辑分离;
快速高效的开发生命周期;
鼓励使用面向服务的架构,即单个容器运行单个应用。
Docker是一个客户端一服务器(C/S)架构的程序。Docker 客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker及一整套RESTful API,可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
Docker依赖的Linux的内核特性包括Namespaces命名空间和Control groups(c groups)控制组。
Namespaces命名空间:
PID (process ID),进程ID隔离;
NET (network),管理网络端口;
IPC ( InterProcess Communication),进程间通信;
管理跨进程通信的访问;
MNT (Mount),管理挂载点;
UTS (UNIX Timesharing System),隔离内核和版本标识;
Control groups(c groups),控制组。
Control groups(c groups)控制组:
资源限制;
优先级设定;
资源度量;
资源控制及资源分配;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。