Docker入门笔记03:docker容器技术是什么【转】

Docker入门笔记03:docker容器技术是什么

Docker容器技术并非凭空出现,而是站在巨人的肩膀上,其中最重要的就是LXC(Linux Containers,Linux容器技术),LXC也经历了长期的演化。

最早的容器技术可以追溯到1982年Unix系统上的chroot工具(直到今天,主流的Unix、Linux操作系统仍然支持和带有该工具)

早期(LXC之前)的容器技术包括:

  1. Sun Solaris系统的 Solaris Containers (2004年)
  2. FreeBSD系统的 FreeBSD jail (2000年左右)
  3. Linux系统的 Linux-VServer (2001年10月)和 OpenVZ(2005年)

在LXC之前,这些技术经过多年演化已经十分成熟和稳定,但并没有很好地集成到主流Linux内核中,使用起来不方便。

后来,LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新引入的内核特性,实现了更具扩展性的虚拟化容器方案,最关键的是,LXC被集成到主流Linux内核中,进而成为Linux系统轻量级容器技术的事实标准。从技术层面看,LXC已经趟过了绝大部分的坑,完成了容器技术实用化的大半历程。

在LXC的基础上,Docker进一步优化了容器的使用体验,让容器技术进入寻常百姓家。

  1. Docker提供了各种容器管理工具(例如分发、版本、移植等),让用户无须关心底层的操作,更加简单方便地管理和使用容器
  2. 引入分层文件系统构建、镜像机制,降低了迁移难度,极大地改善了用户体验

有了Docker,用户操作容器就像操作应用自身一样简单。

早期的Docker实现是直接基于LXC的,从0.9版本开始,Docker开发了libcontainer项目,作为更广泛的容器驱动实现,用于替换LXC。

目前,Docker还积极推动成立了runC标准项目,并贡献给开放容器联盟,试图让容器的支持不再局限于Linux操作系统,而是更安全、更开发、更具扩展性。

为什么要用Docker

Docker的优势:

在云时代,开发者创建的应用必须能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制,同时必须是『任何时间任何地点』可获取。快速分发和部署,是Docker的最大优势。

Docker与虚拟机的比较:

  • Docker容器很快,启动和停止可以在秒级实现,传统虚拟机方式要数分钟
  • Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器
  • Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新
  • Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程
  • Dokcer容器除了运行其中的应用外,基本不消耗额外的系统资源,传统虚拟机运行N个不同的应用就要启动N个虚拟机(每个虚拟机要单独分配独占的内存、磁盘等资源),而Docker只需启动N个隔离得很薄的容器,并将应用放进容器即可,应用获得的是接近原生的运行性能
  • 在隔离性方面,传统虚拟机提供的是相对封闭的隔离,但这并不意味着Docker不安全,Docker利用Linux系统上的多种防护技术,实现了严格的隔离可靠性。从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大地提高了使用Docker的安全性。

Docker与虚拟化

传统虚拟机是在硬件层面实现虚拟化(称为完全虚拟化,虚拟硬件,完全模拟底层硬件环境),需要有额外的虚拟机管理应用和虚拟机操作系统层;

Docker容器是在操作系统层面上虚拟化(称为操作系统级虚拟化,虚拟操作系统,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程),直接复用本地主机的操作系统,因此更加轻量级。

总结

Docker容器的简单理解:

可以把Docker容器看作是一种轻量级的沙盒(sandbox)。它是由一个简易版的Linux系统环境(包含root权限、进程空间、用户空间、网络空间等)以及运行在其中的应用程序打包而成的盒子。

每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络相互通信,容器的创建和停止十分快速,几乎跟创建和终止原生应用一样,容器对系统资源的需求很低,远远低于传统虚拟机,很多时候甚至把容器当作应用本身也没有任何问题。

posted @ 2021-05-18 20:36  融爸  阅读(147)  评论(0)    收藏  举报