Docker 专业术语你都知道吗?
Build, Ship and Run Any App, Anywhere!
最近一段时间对 Docker 很感兴趣,在工作当中也开展了一些应用并有了更深入地了解,很是喜欢。想写点关于它的文章,发现 Docker 太过火爆各类文章都有--#调查了下发现从概念视角来介绍 Docker 的文章比较少。
整理原则:为了便于理解和记忆相关概念,所以概念的描述不应过长,要尽可能精炼并且还需要将概念进行结构化归类。
首先对 Docker 的相关概念进行分类:
- 基础概念
- 实现概念
- 相关概念
基础概念
包含 Docker 自身的组成概念。
Container
Container:容器技术并非虚拟化,更准确的说它是一种资源隔离机制。除了 Docker 外,容器还有 warden(cloudfoundry)、LXC。
Docker
Docker:它是轻量级容器?NO!它是一套轻量级操作系统虚拟化解决方案,把 cgroup、namespace、LXC 等容器底层技术抽象的一个引擎,为用户提供了创建和管理容器的便捷界面(包括命令行和 API)。
Registry
Registry(仓库):使用起来有点类似于 git 仓库,用来存储镜像、层以及关于镜像的元数据。Docker 仓库也有公有和私有的概念。公有的仓库就是 Docker Hub。
Image
Image(镜像):容器运行时的只读模板。每一个镜像由一系列的层 (layers) 组成,层是由 Dockerfile 指定。
Dockerfile
Dockerfile:命令集,每行均为一条命令。每行的第一个单词为命令。后面的字符串是该命令所要接收的参数。
Docker Client
Docker Client:Docker 架构中用户用来和 Docker Daemon 建立通信的客户端。用户使用 client 作为 Docker 交互工具向后台 daemon 发送管理容器的请求。
Docker Daemon
Docker Daemon:Docker 架构中一个常驻在后台的系统进程,用于接受并处理 Docker Client 发送的请求。
Docker Server
Docker Server:属于 Docker Daemon。在 Docker 架构中是专门服务于 Docker Client 的 server。该 server 的功能是:接受并调度分发 Docker Client 发送的请求。
Engine
Engine:Docker 架构中的运行引擎,同时也 Docker 运行的核心模块。它扮演 Docker container 存储仓库的角色,并且通过执行 job 的方式来操纵管理这些容器。
Graph
Graph:已下载容器镜像的保管者,以及已下载容器镜像之间关系的记录者。
实现概念
Docker 实现层面的相关概念。
LXC
LXC:一种操作系统级虚拟化方法,在执行时不用重复加载内核, 且其内核与宿主共享,允许其他一些沙盒进程运行在一块相对独立的空间,并且能够方便的控制他们的资源调度。
namespace
通过 namespace 实现容器间的隔离性。容器内的应用只能在自己的命名空间中运行而且不会访问到命名空间之外。
cgroups
cgroups(Control Groups):用来管理群组。使应用隔离运行的关键是让它们只使用你想要的资源。这样可以确保在机器上运行的容器都是良民(good multi-tenant citizens)。群组控制允许 Docker 分享或者限制容器使用硬件资源。
AUFS
AUFS (AnotherUnionFS):一种 Union FS, 支持将不同目录挂载到同一个虚拟文件系统下的文件系统。
GRSEC
GRSEC:linux 内核安全相关的 patch, 用于保护宿主机防止非法入侵。
union mount
union mount:联合加载技术,AUFS 基础。一次同时加载多个文件系统,但在外面看起来只有一个文件系统。Docker 的镜像就是多层文件系统叠加到一起。
copy on write
copy on write:写时复制。容器是由镜像所创建,会根据多层文件系统构建一个镜像栈,只有栈的最顶层是读写层。如果发生对只读层的写操作时会将该文件复制到读写层,并隐藏只读层的文件。
libcontains
libcontains:用于替代 LXC。反向定义容器的实现标准,通过其操纵容器的 namespace、cgroups、apparmor、网络设备以及防火墙规则等。
libchan
libchan:以标准接口的方式解决容器的互联互通,实现跨平台,能更好支持分布式系统和并发编程。
libswarm
libswarm:一个很小的工具包,用来组合 Docker 的各种网络服务。定义了一个服务的标准接口,用于分布式系统中各个服务模块之间的通讯。
周边概念
和 Docker 关系较紧密的一些概念。
CaaS
CaaS(Container as a Service):容器即服务。CaaS 客户不需要关心他的容器到底是运行在哪,CaaS 服务商将自动化进行资源调配,帮助客户选择最便宜的或最合适的公有云平台。
Docker Machine
Docker Machine:一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,比如 VirtualBox、Digital Ocean、Microsoft Azure。
Docker Compose
Docker Compose:一个“应用层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。
Docker Swarm
Swarm:一套用以管理 Docker 集群的工具,使得 Docker 集群暴露给用户时相当于一个虚拟的整体。和 Docker 的其它项目一样,遵循"batteries included but removable"原则。
文中相关概念由于仅限于我接触到的难免有所遗漏,欢迎大家斧正!
参考资料
1. https://github.com/docker
2. http://www.csdn.net/article/2014-09-24/2821832
3. http://blog.csdn.net/shlazww/article/details/39178469
4. http://www.openstack.cn/?p=2203
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论