很多朋友都在沟通中谈起docker,虽然它已经火了很长时间了但仍有朋友不熟。也是看到热度很高想了解它,这里我简单说下自己的理解。 本文并不讨论任何实际应用方法,只单纯从一个运营者的角度通俗的说下容器到底可以给你的应用带来什么。
什么是容器
不贴百科之类技术名词,一句话容器就是个箱子,它可以装入东西并与外界有隔离。对于网络应用来说类似一个虚拟机、安卓模拟器的东西。
容器有什么特点
- 在箱子里的东西不会影响到外部和其他箱子的东西
- 箱子里的东西可以指定相同标准,一个医疗包里面有消炎药,那想采买另一个医疗包也只需要放入相同的消炎药就行。
- 箱子可以放在任何地方,医疗包可以放在衣柜、车上、背包里,不管放在哪医疗包里的东西还是原样。
没错,容器就是上面主要特点。那看起来挺好的,为什么还说它有没必要用呢?
容器有什么缺点
- 特点1的反效果是箱子成为东西的载体,一旦箱子出现状况,里面的东西会丧失稳定状态。在桌子上放置个箱子,箱子里有一个录音机,别人不小心碰到箱子掉在地上,里面的录音机也会坏掉。即使没有地震桌子也没坏,录音机还是坏了。
- 本来桌子就是放置物品的,现在不止要放置录音机还要放上一个箱子,那桌子的承重负担肯定增大。
- 录音机在箱子里录制,想要连接到电视音箱上播放需要额外开辟箱子与外部的连接管道,这对只想播放来说操作难度加大。
那到底要不要用容器
- 如果你有很多东西需要归置,那就用。如要发行很多个医疗包,一个一个装箱很麻烦,列出一个清单请工人按清单整理装箱会更简单而且能保证里面的东西一样。
- 如果你有危险的东西需要单独归置,那就用。如需要放酒精、汽油等危险品,那单独装箱,额外开辟管道需要用时抽出来点。出现危险也只会烧掉这个箱子不会把整个房子毁掉。
以上两点是用不用箱子主要需要考虑的,回到我们的网络应用中
- 如果你的应用是单体并没有批量分发的需求,使用容器弊大于利。
- 如果你有微服务需要隔离,那使用容器可以更方便。但前提要做好数据一致性的处理。
- 如果你只是跟风想用,那千万别用。应用环境和容器环境是不同的,你丧失了配置应用环境的主动权,一但出现问题将很难收拾。