Docker:简介

什么是容器

容器是指容纳其他物品的工具,物体可以被放置在容器内,容器可以保护其中内容物;

Linux容器发展之路

容器技术的概念最初出现在 2000 年,当时称为 FreeBSD jail,这种技术可将 FreeBSD 系统分区为多个子系统(也称为 Jail)。Jail 是作为安全环境而开发的,系统管理员可与企业内部或外部的多个用户共享这些 Jail

通过Jail技术在Linux中的实现这个项目被叫做VServer,在完成了这项针对 Linux 中多个受控制用户空间的基础性工作后,Linux 容器开始逐渐成形并最终发展成了现在的模样

很快,更多技术结合进来,让这种隔离方法从构想变为现实。控制组(cgroups)是一项内核功能,能够控制和限制一个进程或多组进程的资源使用。而 systemd 初始化系统可设置用户空间,并且管理它们的进程,cgroups 使用该系统来更严密地控制这些隔离进程。这两种技术在增加对 Linux 的整体控制的同时,也成为了保持环境隔离的重要框架。

传统虚拟化技术与容器技术的对比

虚拟机【全虚拟化技术】

  • Server层:所有的硬件设备
  • Host OS层:宿主机
  • Hypervisor层:管理程序【VMware】

虚拟机:是通过Hyervisor管理程序先模拟宿主机硬件设备,在模拟宿主机的软件操作系统,CPU,IO;是一种全量模拟,从而实现了互相的隔离

  • 优点:完美的隔离了,两个不同的应用场景,各自的功能、资源都是隔离
  • 缺点:非常耗费资源,当虚拟设备要执行某项Core中特权质量,需要通过Hypervisor,的转发到宿主机去执行,性能会有耗损(有中间商赚差价)


容器

  • Servier层:所有的硬件设备
  • Host OS层:宿主机
  • Docker Engine层:Docker 引擎

容器技术:共享宿主机硬件与网络资源;在Docker容器中运行自己所需的程序,并相互隔离

Docker隔离,隔离什么?

两个独立的Docker,需要chroot以及namespace的隔离【根文件系统和,进程系统】

Linux在内核中通过namespaces,原生支持6中资源的隔离,并且直接通过系统调用对外进行输出。另外我们还需要用到CCgroups控制美国namespaces中的资源分配,如需要实现:资源限制管理、优先级设定、资源计量、资源控制,以下具体分工

从LXC (Linux containers) 到Docker

LXC将原来需要手工编码实现的容器技术,进行了封装。实现了更加方便、快速的容器创建及管理技术。通过固有的“模板”,安装并启动容器,将远程的程序包下载到本地,安装并创建好了容器。

LXC已经很大程度上降低了容器管理的难度,但是依然使用了一些弊端。有些时候更具需要需要定制"模板",以及大规模创建及复制依然比较麻烦。所以很难应用到

Docker这时候就出现了,Docker其实就是在LXC基础上,使用GoLang二次开发的封装版本

总结

早期的FreeBASE--------》Linux vserver实现了以下三种

  • chroot :根文件系统的切换
  • namespace:命名空间的隔离【UTS Mount IPC PID user network】
  • ccgroups:资源空间的分配和监控

通过比较复杂的代码开发的过程,调用以上三项技术实现容器的创建   ----> 管理  ---->销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值