2018-09-18 10:03 浏览量:777
以下将从不同时期应用部署、运维的优缺点展开说明。
直接在物理机上部署应用,无法做到应用之间资源隔离以及合理利用。
虚拟机的出现,弥补了上面的不足。虚拟机将物理机器资源统一抽象为单元,按需分配。不同的实例之间资源隔离、独立的内核。但是随着互联网的快速发展, 要求app能够快速扩展资源以及实例。当前的虚拟机机器显然不能满足此需要。其主要有以下几点
很早以前就有了容器化的概念。近几年随着互联网井喷式的发展,容器机器有了一个很好的契机暴露在大众的眼前。
容器也有缺点
容器技术发展
linux chroot->google cgroup->lxc(linux container)->docker(libContainer)
Hyper = Hypervisor + Docker镜像
Hyper是一个基于虚拟化技术(hypervisor)的Docker引擎。官方认为虽然Hyper同样通过VM来运行Docker应用,但HyperVM里并没有GuestOS,相反的,一个HyperVM内部只有一个极简的HyperKernel,以及运行的Docker镜像。这种Kernel+Image的”固态”组合使得HyperVM和Docker容器一样,实现了ImmutableInfrastructure的效果。借助VM天然的隔离性,Hyper能够完全避免LXC共享内核的安全隐患。
Docker项目最初是由一家名为dotCloud的平台即服务厂商所打造,其后该公司更名为Docker。与Warden类似,Docker同样在起步阶段使用LXC,而后利用自己的 libcontainer库将其替换下来。与其它容器平台不同,Docker引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、 一个精简化REST API以及一套命令行界面等等。在后期发展阶段,Docker公司还构建起一套名为Docker Swarm的容器集群管理解决方案。
Docker与虚拟机原理对比:
由于容器技术很早就有,Docker最核心的创新在于它的镜像管理,因此有人说:
Docker = 容器 + Docker镜像
Docker镜像的创新之处在于使用了类似层次的文件系统AUFS,简单说就是一个镜像是由多个镜像层层叠加的,从一个base镜像中通过加入一些软件构成一个新层的镜像,依次构成最后的镜像,如图
操作系统
chroot
namespace
guestOS
cgroup
虚拟机
容器化
具体实现
LXC
LXD