Docker版本
2017年3月之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开。
Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。
Docker企业版(EE):专为企业的发展和IT团队建立。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。
相关内核技术
docker容器本质上是宿主机的==进程==. 可以把docker容器内部跑的进程看作是宿主机的线程。
Docker通过==namespace实现了资源隔离==
通过==cgroups实现了资源限制==
NameSpace
Linux内核实现namespace的一个主要目的就是实现轻量级虚拟化(容器)服务。在同一个namespace下
的进程可以感知彼此的变化,而对外界的进程一无所知。
inux内核提拱了6种namespace隔离的系统调用
namespace 系统调用参数 隔离内容
UTS: 每个NameSpace都拥有独立的主机名或域名,可以把每个NameSpace认为一个独立主机。
IPC: 每个容器依旧使用linux内核中进程交互的方法,实现进程间通信
PID: 每个容器都拥有独立的进程树,而容器是物理机中的一个进程,所以容器中的进程是物理机的
线程
Net: 每个容器的网络是隔离
Mount: 每个容器的文件系统是独立的
User: 每个容器的用户和组ID是隔离,每个容器都拥有root用户
小结: 应用程序运行在一个隔离的空间(namespace)内, 每个隔离的空间都拥有独立的
UTS,IPC,PID,Net,Mount,User.
Control Group
控制组(CGroups)是Linux内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。
只有能控制分配到容器的资源,才能避免多个容器同时运行时对宿主机系统的资源竞争。
控制组可以提供对容器的内存、CPU、磁盘IO等资源进行限制和计费管理。
内容小结
容器属于操作系统虚拟化,属于Paas
容器可看作是一种轻量级,进程级的虚拟机
相比于KVM虚拟机的优势
不需要安装OS,和宿主机共享
镜像存储空间小
启动速度快(容器为秒级,虚拟机一般需要10秒左右)
移植性更好,更轻便
性能更好
docker是一个实现容器的软件,底层使用LXC
docker主要使用namespace命名空间技术实现资源隔离,使用cgroup实现资源限制
网友评论