Docker 系列(一):Docker 是什么

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立了推动容器标准化的开放容器联盟(OCI)。

Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

Docker 使用 Google 公司推出的 Go 语言进行开发实现,基于 Linux 内核的 cgroup、namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大地简化了容器的创建和维护,使得 Docker 技术比虚拟机技术更为轻便、快捷。

Docker 与传统虚拟化的区别

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

传统虚拟化架构:每个虚拟化的应用不仅要包含应用本身和所需的二进制库,还要附带一整套重量级的客户机操作系统

Docker 架构:容器只包含应用及其依赖,作为用户态进程运行在宿主操作系统上,与其他容器共享内核,更轻量也更可移植

系列导航


   转载规则


《Docker 系列(一):Docker 是什么》 由 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Docker 系列(二):为什么要用 Docker Docker 系列(二):为什么要用 Docker
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。 更高效的利用系统资源由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度
2022-08-23
下一篇 
Docker 系列导读:从单机容器到 Kubernetes 的完整路径 Docker 系列导读:从单机容器到 Kubernetes 的完整路径
这个系列把 Docker 的知识整理成了一条由浅入深的完整路径:从「Docker 是什么」的第一问开始,经过镜像、容器、仓库三大核心概念与日常操作命令,进入数据管理与网络配置两座大山,再下探到命名空间与控制组的底层实现,最后以 Compos
2022-08-15
  目录