Docker
Docker是一个在单一控制主机上同时运行多虚拟单元(容器)的轻量级的虚拟化解决方案。容器使用内核cgroups和内核名字空间来进行隔离。
完全的虚拟化解决方案,例如:Xen、KVM、libvirt等,都是基于处理器来模拟一个完全的硬件环境,并且可以控制虚拟机。
Docker架构如下:
术语
cgroups:Control Groups是Linux内核的一个特性,cgroups允许将任务(进程)以及他们的子进程聚合或分割到分级的组中,以便对资源进行隔离。
镜像:专为Docker容器定制的镜像,只读层;
镜像名:镜像的名字,Docker命令中将会用到这个镜像名;
容器:一个运行的Docker镜像;
容器ID:Docker容器的ID,唯一,用于命令行;
Tag:镜像的标签,可自定义;
内核名字空间:内核中用于隔离资源(例如:网络、用户、进程等)的特性;
Docker Host Server:运行Docker守护进程的系统,并提供镜像和cgroups功能;
Registry:Docker镜像的远程仓库;
Repository:保存所有一个镜像所有版本的仓库地址;
Docker优势和局限性
优势:
1. 容器之间的应用程序和操作系统隔离;
2. 近乎本地的性能,Docker可以实时管理资源的分配;
3. 支持镜像多个版本;
4. 可以基于一个已经存在的镜像来制作新镜像;
5. Docker Hub允许通过公共和私有仓库来共享和存储镜像;
局限性:
1. 容器运行在宿主系统的内核中,并且不能使用不同的内核;
2. 目前guest OS只支持Linux系统;
3. Docker不是一个全虚拟化栈;
4. Docker容器的安全性取决于宿主系统的安全性;
容器驱动
Docker有不同的后端驱动来处理容器;
1. libcontainer
2. LXC
3. libvirt-lxc
存储驱动
1. vfs
2. devicemapper
3. btrfs
4. AUFS
本文出自 “烟花易冷” 博客,请务必保留此出处http://yuanhuan.blog.51cto.com/3367116/1621366
原文地址:http://yuanhuan.blog.51cto.com/3367116/1621366