为什么有docker?

1. 宿主机可以虚拟一个硬件平台;其上会有内核(在虚拟机上的操作系统),内核负责资源调度和通信;内核之上会有用户态,运行在用户态(用户空间)之上多是应用程序,也就是进程。硬件(虚机)平台->内核->应用程序。

2. 运行一个应用服务需要提供从硬件到内核的支撑并提供两层调度,多个应用之间不能相互独立 。

3. 硬件平台->隔离环境管理器->多个隔离环境(每个环境就是一个容器)。

4. 每个容器有自己 UTS(主机名和域名),Mount(文件系统),IPC(进程通道),PID 进程树(虚拟),文件管理树(虚拟),User(用户组),Net(网络)。每个容器被虚拟一个名称空间。

docker_概念

5. 主机级虚拟化 -> 容器级虚拟化

怎样支持容器化?

1.  lxc(linux container)

2.  docker 利用lxc创建模板管理引擎

3.  docker通过镜像技术把用户空间所需要的组件打包成一个镜像文件,并把镜像文件放到一个网络仓库中

4.  docker基于镜像启动一个容器,缺点是一个容器只有一个进程

docker_概念

5. 容器编排,一个组件把应用程序之间的依赖关系,从属关系,律属关系反映到启动和关闭时的次序和管理逻辑之中。(kubernetes)k8s