首页 » 翻译 » Docker » 正文

app的容器化 kubernete 和container

在docker出现之前,我们常规企业部署应用的时候,拿一个java开发的网站来说,大的部分需要:

tomcat , apache, mysql , ImageMagic(用于处理图像相关),jdk

然后我们把这些东西放到一个服务器上(实体或者虚拟机),一般情况下都是这样的,这样做就会有一些问题,因为上边讲的软件jdk, mysql , ImageMagic等可能会遇到升级的情况,而这些升级,有时候,真的会导致我们的网站无法访问,当然,系统也会升级,作为运维人员来说,最可怕的就是升级之后网站出现问题回滚的过程,基本就不用想着睡觉了….

还有的情况下,服务器上放的不只是网站,还有其它应用,那更高兴了,升级网站相关的时候,没注意其它的,一升级完,网站没事,其它的全挂了….

所以,我们希望每次这样的更新都能够测试的非常全面,而且测试环境必须和线上环境一致,这样的测试很难做到全面,特别是在软件比较复杂的情况下,而且,有些升级,必须把软件停掉,这对高可用的网站来说,逐个升级是一个解决方案,但是当这个机群很大,app非常复杂的时候,每次升级都是非常痛苦的

现在,我们可以使用Container了,容器, 容器是什么呢? 虚拟机我们都知道, 在一台物理机上,虚拟出来的机器,有独立的磁盘,独立的网络,独立的文件系统,任何一台虚拟机的任何灾难性破坏都不会影响其他虚拟机,但是我们启动虚拟机,关闭虚拟机都和真实机器差不多,而且一台物理机能够虚拟的虚拟机的数量是有限的,而且是很少,容器,我们可以认为是轻量级的“虚拟机”,容器中的文件,网络等也是各自隔离的,但是容器需要占用的资源远远少于迅疾

容器的好处:

1: 硬件需求资源少,通过系统自带的功能来创建个隔离的环境,如 namespaces,cgroups ,这与虚拟机相比就非常明显了

2:环境隔离,容器中的资源和所在的主机环境没有任何影响,不会因为所在主机的系统版本而变化,因为所有需要的资源都在容器内,与所在主机没有任何关系

3:极速部署,容器的启动速度是相当快的,因为不需要和虚拟机一样经历开机等过程

4:跨环境部署, 因为所有的环境都在容器内,所以可以在任何环境下部署,无论你是windows还是linux,不管你是6.1 还是7.1

5:可复用性,你创建一个镜像之后,你可以在多个地方使用,很简答的一句启动命令就可以启动,当然,删除也很简单

 

 

 

 

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)