docker容器技术基础入门

主机级虚拟化

type-1:运行在裸硬件上的虚拟机,虚拟机中安装操作系统
type-2:裸硬件上运行操作系统,操作系统上安装虚拟虚拟机上运行,操作系统,

容器级虚拟化

程序不再所以一个独立的内核,而共享同一个内核

容器是啥

容器:用来运行程序的,在用户空间虚拟的隔离环境管理器,将用户空间隔离出多组,将用户空间隔离出来一个空间,运行一个服务或多个程序,每个空间互相不干扰,共享同一个一个内核程序,

用户空间是啥

用户空间:需要看到的组件,主机名和域名(UTS)需要有,根文件系统(MOUNT)需要有,需要有ipc,进程间通信的专用通道,ipc可以使用共享内存,把数据丢到一段共享内存空间内,别的程序可以访问使用,这就是进程间通信,PID伪装一个init,UID,在内核中的一个普通用户,在这个容器内伪装为root,可以仅在这个容器内为所欲为--

两颗树,进程树和根文件系统树

用户空间需要看到的组件UTS--MOUNT--IPC--PID--USE--NET,在容器内把这些虚拟出来,进程就觉得自己是唯一

LINUX内核通过一种名称空间的机制,对他们UTS--MOUNT--IPC--PID--USE--NET的虚拟化原生支持,namespaces,通过系统调用,clone()克隆,创建进程,setns()将进程放在指定的名称空间内,在家长chroot切换根文件系统,在实现容器

Control Groups(cgroups)资源分派

可以实现对一个系统之上索要运行的进程,给他分门别类的分分类,每一类就叫一个组,叫控制组

chroot--namespaces--cgroups这是最重要的组件,而这三种在内核3.8版本以后天然实现

镜像文件是啥

镜像文件:把一个操作系统,用户空间所需要用到的所有组件,事先编排好,编排好以后,给他整体打包好为一个文件,这个文件就叫做镜像文件,存储在统一的仓库中

原文地址:https://www.cnblogs.com/hao-ran/p/11480312.html