从chroot到Docker:容器技术进化史

一、容器雏形

1.容器起源可追溯UNIX系统中的chroot命令

1.1chroot命令

把某个目录当成‘假的根目录’,进程及子进程锁在一个隔离的文件系统视图,让程序以为它就是整个电脑最顶层。

chroot="给进程戴个面罩,告诉它:世界就这么大,别乱跑!”

1.2以chroot为代表的文件隔离技术的先天缺陷

1.2.1单一性

只改变了进程看到的‘根目录’,但是进程、设备、内核资源都和主机共享

1.2.2资源溃败

无法限制CPU、内存等,恶意进程可以直接耗尽宿主机的资源

1.2.3高风险

如果内核提权有漏洞,chroot内可以直接拿到宿主机root,因为共享了同一内核

2.实现完美隔离机制——名称空间

2.1名称空间

Linux内核提供的一种轻量级虚拟化,将一组系统资源隔离到一个独立空间中,不同进程看到的系统资源互不影响

名称空间就是给进程画一个‘独立世界’,让它以为自己在独占整个操作系统

2.2控制组Cgroups

Linux内核提供的管理隔离机制,控制组就是内核级的进程资源配额系统,确保每个进程只能使用分配到的CPU、内存,磁盘I/O等资源,能够实现"资源隔离,防止抢占”的底层核心机制

Cgroups是Llinux的“预算管理员”,它给一组进程定规矩:最多用多少CPU、多少内存、多少硬盘速度,想超之?没门! Docker、Kubernetes都靠它实现“容器不会吃垮宿主机”的效果

二、容器诞生

1.LXC系统级虚拟化功能

1.1什么是LXC系统

利用Llinux内核的Namespace隔离进程、网络等和Cgroups在同一台主机上创建多个相互隔离的用户空间,每个容器就像一台“轻量级虚拟机”,共享宿主内核,

LXC=“用极小的开销,把一台Linux变成多台小Linux”的工具箱

1.2LXC虚拟化功能

维度功能
进程隔离PID、IPC、UTS、Mount.......
资源限制内存、CPU、磁盘I/O.......
文件系统支持最小系统,可读写或只读
网络veth、macvlan、物理网卡直通等模式
安全增强支持非特权容器,减少宿主机暴露

可惜LXC眼中的容器是一种封装系统的轻量级虚拟机,必然不能站在舞台最中央

2.Docker惊艳问世

Docker一个开源的应用容器引擎,基于Llinux内核的容器技术(namespaces,cgroups)实现,用于打包、分发和运行程序,对程序文件、运行时环境、软件依赖包都可以封装打包、部署的技术手段

三、容器理念

1.双向对比

对比点Docker容器虚拟机
架构共享宿主内核每个VM带完整Guest OS
启动秒级分钟级
镜像MB级GB级
性能接近原生有虚拟化损耗

2.三大核心概念

2.1仓库

镜像仓库,默认Docker,也可自建harbor,用来存储、分发、管理镜像的地方

镜像仓库就是“镜像的网盘商店”,存镜像,管版本,分权限,随时上传下载

2.2镜像

镜像是只读的模板,包含了创建容器所需的所有文件和配置信息

镜像就是“打包好的系统快照”,复制到哪里,哪里就能瞬间变成同款环境

2.3容器

容器是一个运行在隔离环境中的程序

3.常见用途

开发环境:一键交付相同环境

微服务:每个服务一个容器

CI/CD:Gitlab里用容器跑测试,构建

Docker把“应用+环境”装进了轻量级、可移植、秒级启动的盒子里,解决了“在我机器能跑,在你机器就崩”的难题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值