导读:本文章对Docker技术进行了介绍,阐述了Docker的技术发展历程、容器与虚拟机的差异、Docker原理、特点、Docker三组件和Docker带来的影响,为我们进一步理解Docker打下基础。 一、前言 2014年春天,我进入一家电商公司做反应式编程研究和落地工作,因为做的是平台工作,希望通过平台去满足不通的业务场景,业务部门只需要进行简单的适配和封装就能进行产品创新。此时就需要一种工具去快速搭建基础环境,环境之间不能相互干扰,业务部门还能方面使用。就这样和Docker进行了第一次偶遇,基于它我们将基础环境、公共组件等封装到镜像中,业务部门只需要将代码放入Docker中就可以轻松使用,原来需要1-2周的环境准备,现在只需要几分钟,太神奇了! 二、什么是docker? Docker 是PaaS 提供商 dotCloud, 基于容器技术的轻量级虚拟化解决方案,诞生于2013年初,基于Google公司推出的Go 语言实现,加入了 Linux 基金会,遵从Apache 2.0 协议,原始码在GitHub上进行维护;2017年Docker进行商业化运作,原来在github上开源项目正式改名为moby,docker变成了一家商业化公司。说到Docker,我们就不得不说容器技术了,Docker是一种容器化技术的落地。容器作为一类操作系统层面的虚拟化技术,其目标是在单一Linux主机交付多套隔离性环境,容器共享同一套主机操作系统内核。 三、Docker技术发展历程 2011年 — Warden:由CloudFoundry公司于2011年所建立,其利用LXC 作为初始阶段,随后又将其替换为自家实现方案。与LXC不同,Warden并不会与Linux紧密耦合。相反,其能够运行在任意能够提供多种隔离环境方式的操作系统之上 2013年 — LMCTFY:“Let Me Contain That For You(帮你实现容器化)”。它其实属于谷歌容器技术堆栈的开源版本,负责提供Linux应用程序容器,Kubernetes目前所使用的cAdvisor工具最初就来源于lmctfy项目 2013年 — Docker:起步阶段使用LXC,而后利用自己的libcontainer库将其替换下来。与其它容器平台不同,Docker引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、一个精简化REST API以及一套命令行界面等等。在后期发展阶段,Docker公司还构建起一套名为Docker Swarm的容器集群管理解决方案 2014年 — Rocket:解决部分Docker当中存在的缺陷,开发目标是在安全性与生产要求满足能力上超越Docker,其基于App Container规范并使其成为一项更为开放的标准 2015年—Docker进行大家视线,开源社区得到前所未有的发展 2016年 — Windows容器发布,docker新技术架构升级 2017年—Docker:正式进行商业化运作,docker与moby分家 2018年-Docker在企业中快速落地 四、容器与虚拟机差异 容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。容器技术使用了namespaces来进行空间隔离,通过文件系统的挂载点来决定容器可以访问哪些文件,通过cgroups来确定每个容器可以利用多少资源。此外容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升。 对于系统虚拟化技术来说,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像。CPU虚拟化技术可以为每个用户提供一个独享且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源 基于docker容器虚拟化与传统虚拟化对比

