共计 1779 个字符,预计需要花费 5 分钟才能阅读完成。
本篇内容介绍了“Container 是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.1 Why Container?
以下将从不同时期应用部署、运维的优缺点展开说明。
操作系统(OS)
直接在物理机上部署应用,无法做到应用之间资源隔离以及合理利用。
资源不隔离。一个内存使用量比较大的 app 可能消耗所有的内存资源,导致其他 app 无法正常提供服务。
所有 app 共享一份物理机运行环境(kernel+app)。无法做到按照 app 定制化运行环境或则 app 对特定内核的要求。
如果将多个 app 部署在不同的物理机上。a. 需要购买大量物理机器,花费较大。b. 需要不同 app 对于硬件要求不同,需要特殊定制。c. 需要花费大量运维时间。
当前,cpu、内存等硬件发展速度远远高于软件的速度。很多老的系统自需要少量的 cpu 或者内存,但是其独占一台机器,造成资源浪费。
虚拟机(VM)
虚拟机的出现,弥补了上面的不足。虚拟机将物理机器资源统一抽象为单元,按需分配。不同的实例之间资源隔离、独立的内核。但是随着互联网的快速发展,要求 app 能够快速扩展资源以及实例。当前的虚拟机机器显然不能满足此需要。其主要有以下几点
镜像臃肿。每个镜像少则几百兆,正常都在几个 GB 大小。
创建和启动时间开销大,不利于快速重组。(不能满足互联网弹性计算要求)
性能损耗大
额外的资源开销大
容器技术(Container)
很早以前就有了容器化的概念。近几年随着互联网井喷式的发展,容器机器有了一个很好的契机暴露在大众的眼前。
镜像体积小。只包括应用以及所依赖的环境,没有内核
创建和启动快。不需要启动 GuestOS,应用启动开销基本就是应用本身启动的时间开销
无 GuestOS,无 hypervisor,无额外资源开销,资源控制粒度更小,部署密度大
使用的是真实物理资源,因此不存在性能损耗
轻量级
容器也有缺点
隔离性相对虚拟机弱。由于和宿主机共享内核,带来很大的安全隐患,容易发生逃逸。
如果某些应用需要特定的内核特性,使用容器不得不更换宿主机内核。
容器技术发展
linux chroot- google cgroup- lxc(linux container)- docker(libContainer)
hyper
Hyper = Hypervisor + Docker 镜像
Hyper 是一个基于虚拟化技术(hypervisor)的 Docker 引擎。官方认为虽然 Hyper 同样通过 VM 来运行 Docker 应用,但 HyperVM 里并没有 GuestOS,相反的,一个 HyperVM 内部只有一个极简的 HyperKernel,以及运行的 Docker 镜像。这种 Kernel+Image 的”固态”组合使得 HyperVM 和 Docker 容器一样,实现了 ImmutableInfrastructure 的效果。借助 VM 天然的隔离性,Hyper 能够完全避免 LXC 共享内核的安全隐患。
1.2 Why Docker?
Docker 项目最初是由一家名为 dotCloud 的平台即服务厂商所打造,其后该公司更名为 Docker。与 Warden 类似,Docker 同样在起步阶段使用 LXC,而后利用自己的 libcontainer 库将其替换下来。与其它容器平台不同,Docker 引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、一个精简化 REST API 以及一套命令行界面等等。在后期发展阶段,Docker 公司还构建起一套名为 Docker Swarm 的容器集群管理解决方案。
快速构建基于容器的分布式应用
具有容器的所有优点
提供原生的资源监控
Docker 与虚拟机原理对比:
由于容器技术很早就有,Docker 最核心的创新在于它的镜像管理,因此有人说:
Docker = 容器 + Docker 镜像
Docker 镜像的创新之处在于使用了类似层次的文件系统 AUFS,简单说就是一个镜像是由多个镜像层层叠加的,从一个 base 镜像中通过加入一些软件构成一个新层的镜像,依次构成最后的镜像,如图
“Container 是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!