分享

为何弃用虚拟机?Docker容器技术有何不一样?

梧桐 发表于 2019-6-26 09:47:20 [显示全部楼层] 只看大图 回帖奖励 倒序浏览 阅读模式 1 1109
本帖最后由 梧桐 于 2019-6-26 09:50 编辑

在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境要如何维护呢?是一台机器部署一个应用,还是一台机器部署多个应用?多个应用之前又要怎么隔离呢?这时候就需要使用到虚拟化技术了。
1561513579407_9OW9DTaZLIt1VqBHgXmWz5UvoJiyqJG5XzfXcLgbcBBao1560228356180.jpg
最早的虚拟化技术是虚拟机,所谓虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统 。这个听起来有些绕口,其实就是通过软件的隔离,让你的电脑能够同步安装多个完整的计算机系统,这里说的软件比较有名的就是VMWare和OpenStack,通过VMWare或OpenStack,我们在原来的电脑中模拟出一台甚至多台“子电脑”出来。这些子电脑可以是Mac、windows、linux中的任意系统、任意版本,只你软件支持且你能找到镜像。在“子电脑”里,你可以和正常电脑一样运行程序,例如打开word。各个子电脑之间的软件硬件都是相互隔离的,互不影响的。
1561513582490_uIF7u3rA19P1hX8TrtiqE008nQFZwcyeHyq5G2tWhhrpV1560228356182.jpg
虚拟机能够让一台机器像多台机器一样运行,这意味着您需要的服务器更少,并且还可以最大限度地利用您拥有的服务器。这种效率的提高能够节省硬件、冷却和维护成本。借助虚拟化,我们可以在同一台机器上运行多种类型的应用、桌面和操作系统。
弃用虚拟机
1561513585471_nKHar4cH4UjZ7qdz87t3vHPEL=WIc=p8ZldWUQIxaHtgj1560228356183.jpg
但今天我们要说的是,我们要弃用虚拟机,投入容器化的怀抱,为何?LXC,就是Linux容器虚拟技术(Linux container),它是Docker容器技术的基础,Docker轻量级的虚拟化,虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动慢。而容器技术恰好没有这些缺点,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。
1561513588621_W9zq=lMPdCeWmaDcQKvZ9LhZnwNKAK2Ta9RQQ9yzVX5NL1560228356184.jpg
传统虚拟机在硬件层面上实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统,而Docker容器是在操作系统层面上实现的虚拟化,直接利用本地主机的操作系统,因此更轻量。
1561513591699_b8ihgl62hZ1=eyXdL2t07EILtDPbDXJmIcUB6Mftm1r701560228356186.jpg
Docker容器本质上是宿主机上的一个进程。Docker 通过命名空间实现了资源隔离,通过 cgroups实现了资源的限制,通过写时复制机制(copy-on-write)实现了高效的文件操作。能够实现更快速的交付和部署;更高效的虚拟化;更轻松的迁移和扩展;更简单的管理。
1561513597224_Cb61dSt3c79tM4xUz3Jyaf7E4p75puqSuo=LN5fPAncgm1560228356186.jpg
举个简单的例子:传统我们盖房子需要木料、水泥、砖头……,需要选好施工地,并请工人来进行一定时长的工作。等下次我们需要在一个新的地方重新盖房子,就又要重新来一次。Docker将已经盖好的房子,通过魔法背包打包成镜像,里面只是房子模型,没有任何的实际生活用品以保证轻量,等到了一个新的地方,我们只要取出背包中的镜像,房子就还原回来了,想要什么房子就用什么镜像,实现“Buildonce,Runanywhere(搭建一次,到处能用)”。
回复

使用道具 举报

已有(1)人评论

跳转到指定楼层
一起品玩 发表于 2022-2-23 12:02:46
<script type="text/javascript">var jd_union_pid="608851640356670760";var jd_union_euid="";</script><script type="text/javascript" src="//ads-union.jd.com/static/js/union.js"></script>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则