每天5分钟玩转docker容器平台:Day1:Docker容器技术入门

虚拟化的常用技术实现形式(为了实现资源隔离),我来为大家科普一下关于每天5分钟玩转docker容器平台:Day1:Docker容器技术入门?以下内容希望对你有帮助!

每天5分钟玩转docker容器平台:Day1:Docker容器技术入门

每天5分钟玩转docker容器平台:Day1:Docker容器技术入门

一、虚拟化

虚拟化的常用技术实现形式(为了实现资源隔离)

- 主机级虚拟化

- Type-I虚拟化:直接在硬件平台安装一个vmm,不过资源开销过高;

- Type-II虚拟化:Vmware、KVM...在宿主机上面安装主机操作系统(host os),随后在宿主机上安装vmm(虚拟机管理器)在vmm上创建和使用虚拟机;

- 容器级虚拟化

二、容器技术
  1. 自下而上摞起来的机器架构
  • 进程
  • 用户空间
  • 内核
  • hostos
  • 底层硬件平台

2. 内核的核心作用在于资源分配和管理

在用户空间跑的应用进程才能产生生产力而不是操作系统内核,所以节省效率想把内核去掉;但又必须要有内核空间,软件是针对内核的系统调用和库调用,没有内核则无法运行程序;而且进程间协调也是需要内核的;但如果创建一个虚拟机的目的就是为了跑一个web服务器这样的话就要安装内核、安装用户空间、这样资源开销就会过高.

3. 针对二级虚拟化来说:

进程如果要运行需要实现两级调度和资源分派

1. 自己虚拟机的内核 --> 内存虚拟化、CPU调度、IO的调度等等

2. 真正的虚拟机本身也是被宿主机内核管理的抽象层,所以还要调度一次 就会产生额外开销所以传统的主机虚拟化技术确实会让我们在一组硬件平台之上实现跨系统环境、隔离、实验、调试等各种需求,但是带给我们的资源开销还是很大的,很多时候我们只是想创建有限的一个或几个富有生产责任的进程而已,而为此付出的代价就比较大了;

三、自下而上摞起来的Docker架构
  • 隔离的进程
  • 隔离环境(隔离的用户空间,并且可以隔离多个)
  • 虚拟隔离环境管理器
  • 底层硬件平台
隔离环境

隔离环境(也就是隔离的用户空间)可以共享底层同一个内核空间,但运行的进程在运行过程中能看到的边界仅是自己所属的用户空间的边界,隔离后的用户空间给进程提供运行环境并能保护进程不受其他进程的干扰(防止其他进程被远程劫持进行破坏,即使被劫持也只能看到自己所属的用户空间边界)这就叫做容器;

最早上述容器的概念出现在jail,随后复刻到Linux上的vserver上,vserver当时能实现的功能就是chroot(切根)真正的根应该是文件系统的根,实现切根以后,假如在一个子目录下也创建一个fhs定义的发行版应该具有的根下的子目录结构后,使用chroot就能够将子目录当根一样使用,随后在里面运行的进程就会认为这就是根目录;

真正要实现用户空间隔离:在一个单独的用户空间中,一个所谓的用户空间主要目标为了实现隔离环境,进程运行在用户空间中就以为自己是唯一运行在当前内核之上用户空间的进程,而自己能看到的其他进程也会理解为系统上所有进程了;

用户空间中进程看到的组件:
  • 主机名和域名(UTS)
  • 根文件系统(Mount)
  • IPC(进程间通信专用通道),如果两个用户空间的进程可以通过IPC通信则就没有意义了
  • PID(独立进程树,进程编号)
  • User(在内核3.8以后才支持)
  • Net(网络TCP/IP、IP)

上述这些每一种资源在内核中都被隔离的话被称作名称空间。

名称空间

上述六中已经在名称空间中被支持。要想使用容器,得靠Linux内核级的内核资源用于支撑用户空间的内核级的内核资源的名称空间隔离机制来实现。

现在所谓的容器化技术就是靠namespaces内核级的六个namespaces加上chroot来实现的;

Control Groups(Cgroups): 将系统级的资源分为多个组;

将每个组中资源量进行指派或分配到特定的用户空间的进程上来实现;

- blkio: 块儿设备

- cpu: CPU

- cpuacct: CPU资源使用报告

- cpuset: 多处理器平台上的CPU集合

- devices: 设备访问

- freezer: 挂起或恢复任务

- memory: 内存用量及报告

- perf_event: 对cgroup中的任务进行统一性能测试

- net_cls: cgroup中的任务创建的数据报文的类别标识符

四、Linux Container(LXC):

- lxc-create: 可以快速创建一个容器(一个名称空间),创建完成后执行一个脚本(template)用于自动实现安装过程-->创建的名称空间的系统发行版所属的仓库,从仓库中将对应程序包下载下来安装生成新的名称空间;

Docker是LXC的增强版

五、Docker是什么

Docker早期是LXC的二次发行版,Docker具有镜像这么一说,部分镜像存储在镜像仓库,当我们使用Docker创建容器的时候它会自动链接至镜像仓库下载创建容器需要的镜像拖到本地,并基于镜像创建容器,极大的简化了容器的使用难度。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页