Docker的基本概念

  • 基于 Linux 内核的 Cgroup,Namespace,以及 Union FS 等技术,对进程进行封装隔离,属于操作系统 层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
  • 最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 Libcontainer,从 1.11 开始,则进一步演进为使用 runC 和Containerd。
  • Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护,使得 Docker 技术比虚拟机技术更为轻便、快捷。

Docker架构

Docker架构图

K8S:CRI(Container Runtime Interface)
Client: 客户端;操作docker服务器的客户端(命令行或者界面)
Docker_Host:Docker主机;安装Docker服务的主机
Docker_Daemon:后台进程;运行在Docker服务器的后台进程
Containers:容器;在Docker服务器中的容器(一个容器一般是一个应用实例,容器间互相隔离)
Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运行而来,Image固定不变。
Registries:仓库;存储Docker Image的地方。官方远程仓库地址: https://hub.docker.com/search

Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。 Docker使用一种称为名称
空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些
名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于
该名称空间。

容器与虚拟机的区别

容器与虚拟机的区别

虚拟机
Docker

性能对比

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生弱于
系统支持量单机支持上千个容器一般为十几个

https://blog.csdn.net/qq_43684922/article/details/105877798

Docker隔离原理

namespace 6项隔离 (资源隔离)

**namespace ****系统调用参数 **隔离内容
UTSCLONE_NEWUTS主机和域名
IPCCLONE_NEWIPC信号量、消息队列和共享内存
PIDCLONE_NEWPID进程编号
NetworkCLONE_NEWNET网络设备、网络栈、端口等
MountCLONE_NEWNS挂载点(文件系统)
UserCLONE_NEWUSER用户和用户组

cgroups资源限制 (资源限制)

cgroup提供的主要功能如下:

  • 资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示
  • 优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级
  • 资源统计:统计系统资源使用量,如CPU使用时长、内存用量等
  • 任务控制:对任务执行挂起、恢复等操作

cgroup资源控制系统,每种子系统独立地控制一种资源。

功能如下

子系统功能
cpu使用调度程序控制任务对CPU的使用。
cpuacct(CPU Accounting)自动生成cgroup中任务对CPU资源使用情况的报告。
cpuset为cgroup中的任务分配独立的CPU(多处理器系统时)和内存。
devices开启或关闭cgroup中任务对设备的访问
freezer挂起或恢复cgroup中的任务
memory设定cgroup中任务对内存使用量的限定,并生成这些任务对内存资源使用情况的报告
perf_event(Linux CPU性能探测器)使cgroup中的任务可以进行统一的性能测试
net_cls(Docker未使用)通过等级识别符标记网络数据包,从而允许Linux流量监控程序(Traw ic Controller)识别从具体cgroup中生成的数据包

注:namespace和cgroups的概念并不是docker创新的概念,而是Linux的一种技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值