当前位置:首页 > 经验 >

docker 容器到底能做什么(docker容器化有什么用)

来源:原点资讯(www.yd166.com)时间:2022-11-09 07:26:30作者:YD166手机阅读>>

引言

早在2013年的时候,Docker就已经发行,然而那会还是很少人了解docker。一直到2014年,Martin Fowler提出了微服务的概念,两个不相*技术终于走在了一起,创造了今天的辉煌!

近几年来,很多互联网关系开始跟风,构建docker 微服务的架构体系。然而,根据笔者观察发现,有些童鞋在使用过程中,只是会用,而根本不了解为什么使用docker,反正对他们来说,公司让用就用!而某些公司呢,虽然用上了docker,然而运维方式并没有发生改变,白白浪费了docker的大好性能!

因此,才有了本文的诞生。本文不会教你怎么去用什么docker的api,毕竟官网document很全面,而是去讲解docker的优点,进而说明为什么适合微服务的架构!

正文

这里必须要先说明物理机、虚拟机、容器三者的优缺点。笔者不想去列一堆的概念,直接借用知乎的一个回答,回答地址为:

https://www.zhihu.com/question/48174633/answer/229253704

这里借用一下这位大神的三张图,他的回答就三张图!

基本概念

所谓的物理机就是下面这样的别墅

docker 容器到底能做什么,docker容器化有什么用(1)

那么虚拟机机就是下面这样的套房

docker 容器到底能做什么,docker容器化有什么用(2)

最后就是我们的容器,就是下面这样的胶囊公寓

docker 容器到底能做什么,docker容器化有什么用(3)

那么,专业的说法就是,容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。容器之间是共享同一套操作系统资源的,由于容器是共享主操作系统的内核,因此就无法在服务器上运行与主服务器不同的操作系统,也就是说不能再Linux的服务器上运行Windows。就如上面哪个图一样,每个胶囊容器是公用一个厕所,厨房,每个胶囊内无法再构建出自己的厕所和厨房!

容器的优势

隔离强

过去:曾记得12年那会,部门要上一个项目。那会,我是这么*。直接去线上服务器,拷贝一个tomcat,然后改端口号,然后部署应用到webapps文件夹下,重启就好。而且我可以摸着良心说,现在还有很多传统企业是这么做的。

那么这么做的缺点?

很明显,应用之间相互影响。一个应用出现问题,CPU100%了,这个服务器上的其他应用一起凉凉。一个大型应用拆分为几十个微服务,分别交由不同的团队开发,不同团队之间水平参差不齐。如果还采用这种部署方式,你的应用和某个坑爹团队的应用部署在了同一台服务器上,至于结果,我相信你懂的。

现在:用上了docker容器后,将Docker可以将我们的应用程序打包封装到一个容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的资源。容器之间达到进程级别的隔离,在容器中的操作,不会影响道宿主机和其他容器,这样就不会出现应用之间相互影响的情形!

可移植性

过去:曾几何时我们和测试MM之间聊天内容是这样的

开发:"你去测试环境上,按照开发环境一样,再去搭三套一样的测试环境!" 测试:"我….." 几个小时过去了… 测试:"你帮我看看,为什么启动报错,是不是漏配了什么参数?" 开发:"我…."

于是接下来几个小时就这么愉快的和测试mm一起聊天中过去了!!嗯,我相信有些公司是为了解决开发的单身问题,才不使用docker,用心良苦!

然而,和运维GG之间聊天一般是这样的

运维:"开发这群脑残,发布的新war包,又把生产搞挂了!" 开发:"这帮运维傻叉么,我本地好好的,怎么一上生产就不行了!"

于是接下来的几个小时,就在和运维之间的撕逼中过去了!嗯,最终苦的是用户啊!

现在:自从用上docker容器后,可以实现开发、测试和生产环境的统一化和标准化。镜像作为标准的交付件,可在开发、测试和生产环境上以容器来运行,最终实现三套环境上的应用以及运行所依赖内容的完全一致。

在现在微服务的架构中,一个应用拆成几十个微服务,每个微服务都对应有开发、测试、生产三套环境需要搭建。自己算算,如果采用传统的部署方式,有多少环境需要部署。曾听闻某公司在新建一个项目的时候,要花整整一个礼拜来搭建环境,简直是惨不忍睹!

什么,你和我说,你们用上了docker,却还存在这些问题?

笔者曾见过某些公司是这么用docker的。确实虚拟化出容器了,然后在容器上建立ssh server。接下来就厉害了,部署方式完全没变,直接连上容器,一切部署照旧!对此,我也是一言难尽啊!你们这是给领导搭的docker么?

轻量和高效

过去:在2016年的时候,那会在另一家大厂工作。这家稍微规范一点了,一个应用部署在一个虚拟机上!当时最大的体会就是一个,虚拟机非常重,构建速度慢,且占用资源多,一台物理机上只能起十来个虚拟机!

现在:

和虚拟机相比,容器仅需要封装应用和应用需要的依赖文件,实现轻量的应用运行环境,且拥有比虚拟机更高的硬件资源利用率。在微服务架构中,有些服务负载压力大,需要以集群部署,可能要部署几十台机器上,对于某些中小型公司来说,使用虚拟机,代价太大。如果用容器,同样的物理机则能支持上千个容器,对中小型公司来说,省钱!

笔者注:笔者一直觉得这个特性只是一个障眼法。

比如,你说容器启动速度快?难道你工作中吃饱了撑着没事干,一直重启虚拟机么?

你说虚拟机消耗资源多?绝大部分公司的服务器资源利用率应该都不到 50%,大量的CPU、内存、本地磁盘都是常年浪费的,所以 VM 的额外开销不过是浪费了原本就在浪费的资源罢了。所以笔者认为,对于传统应用来说,使用和不使用Docker可能并不能直接给企业带来好处,相反使用中遇到了问题肯定会给企业带来麻烦,对于传统企业来说,不要盲目跟风,VM虚拟机其实够用了!。

总结

在技术演进中,docker只是趋势,并不是结果。相信在未来,一定有更高大上的部署架构出现!

栏目热文

鱼竿最大用几号主线(鱼竿和主线的长度多少最合适)

鱼竿最大用几号主线(鱼竿和主线的长度多少最合适)

​鱼竿是钓鱼装备中的“大件”,价格相对较高,同时也起着非常重要的作用,所以从最开始的挑选到合理的使用再到后期的保养都得十...

2022-11-09 08:09:03查看全文 >>

鲫鱼竿都是用多大主线(鲫鱼竿最好选多长)

鲫鱼竿都是用多大主线(鲫鱼竿最好选多长)

野钓,野钓的魅力所在,下一条咬钩的是条多大的鱼你永远不会知道,是什么鱼。故此,野钓,要有目标鱼,根据主攻鱼的大小选择钓组...

2022-11-09 07:48:16查看全文 >>

鲫鱼竿主线多长合适(鲫鱼竿最大用几号线)

鲫鱼竿主线多长合适(鲫鱼竿最大用几号线)

上班的日子真难熬,每到周一又盼周六,从一开始的纯粹为打发时间买套装钓具到现在一周不碰手就痒研究各种垂钓细节,已经过去十二...

2022-11-09 07:28:39查看全文 >>

鲫鱼竿用什么线(鲫鱼竿最大用几号线)

鲫鱼竿用什么线(鲫鱼竿最大用几号线)

随着钓鱼大军的不断壮大和成长,人们对台钓也是越来越感兴趣,它门槛低,变化多,是许多钓鱼人喜爱有加的主要原因。但是,台钓的...

2022-11-09 08:02:25查看全文 >>

鲫鱼竿能承受多大线组(鲫鱼竿用多少调的好)

鲫鱼竿能承受多大线组(鲫鱼竿用多少调的好)

有位兄弟私信我,“钓鲫鱼的时候,碰到大个体鱼类吃钩很容易切线怎么办,怎么搭配线组和鱼钩,在钓鲫鱼的时候兼顾5斤左右的鲤鱼...

2022-11-09 07:57:37查看全文 >>

什么情况下需要用容器docker(docker容器使用缺点)

什么情况下需要用容器docker(docker容器使用缺点)

什么是Docker?恐怕90%的人脑子一闪而过的都是那张图:一条鲸鱼背上扛着一堆箱子,图片下方是大大的“docker”。...

2022-11-09 07:42:32查看全文 >>

docker与容器关系(docker容器与容器之间通信)

docker与容器关系(docker容器与容器之间通信)

什么是容器?一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。容器镜像是轻量的、可执行的独立软件包...

2022-11-09 08:03:07查看全文 >>

什么是docker容器技术(docker容器的好处)

什么是docker容器技术(docker容器的好处)

在容器技术没有出来之前,开发运维在进行交付的时候经常出现,开发环境执行正常,生产环境部署运行出现问题,很多原因就是因为环...

2022-11-09 08:00:25查看全文 >>

docker容器有什么缺点(docker 有哪些好用的容器)

docker容器有什么缺点(docker 有哪些好用的容器)

# docker解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的...

2022-11-09 07:27:51查看全文 >>

容器docker的缺点(docker容器的总结)

容器docker的缺点(docker容器的总结)

2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什...

2022-11-09 07:37:41查看全文 >>

文档排行