操作系统级虚拟化——学习笔记
来源:互联网 发布:程序员必备软件 编辑:程序博客网 时间:2024/05/16 14:34
容器生态系统
- jails -> LXC -> Docker -> Windows Container
- 引擎
- Docker
- runC
- Rkt
- LXC
- 容器云服务器 Docker
- Docker
- ECS
- GKE (google)
- DaoCloud、Alauda(国内初创公司)
- 容器编排与管理
- Swarm+Compose(Docker主推,上手简单,与Docker紧耦合)
- Kubernetes(google自身数据中心管理调度,Borg的开源版本)
- 业界使用最广泛的容器编排与管理系统
- Mesos+Marathon (伯克利的,Mesos用于大规模数据中心资源调度,Marathon专门用于容器方面的处理)
- 面向容器的OS
- CoreOS
- Project Atomic
- Rancher OS
- Project Photon
- 容器镜像仓库
- Docker Hub
- CoreOS Registry
- Daocloud registry
- 私有 registry
- 监控
- cAdvisor等
Docker和rkt、runC关系
- Docker走平台化路线
- 另一拨成立CoreOS,走小而精路线,得Rocket(rkt),有google、VMWare等支持
- 统一标准,妥协得runC
Docker与LXC
- Docker最早基于LXC,后发展libcontainer(1.10放弃LXC)
什么是Docker
- 不仅是容器,也是引擎
- 不仅是虚拟化技术,更是应用开发、移植的平台
背景
- 复杂应用环境,要求能够高效整合应用及其依赖,避免应用间的影响
- 复杂硬件环境,要求应用能够高效部署在不同硬件环境
docker
- 容器内、外单独考虑,不影响
Docker特征
- 无关内容、无关硬件
- 内容隔离(隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库)
- 自动化
- 职责分离
容器与虚拟机
- 虚拟机需要一个虚拟机管理软件,管理各虚拟机,每个操作系统独立,支持其相关应用
- 容器免去了各个独立操作系统,实现架构更简洁(见上docker特征的内容隔离),但底层硬件或者说操作系统限制了能跑的应用
- 容器是轻量级的,启动快、资源占用少,可支持的量多,但不是完全隔离
- 安全隔离
一个出错不会影响到其他的或是主机 - 性能隔离
相互之间有无性能影响
- 安全隔离
Docker应用
Docker container是Docker架构中服务交付的最终体现形式
在docker的网站上提到了docker的典型场景(摘自百度百科):
- Automating the packaging and deployment of applications(使应用的打包与部署自动化)
- Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
- Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
- Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
Docker架构
- 用户使用docker client
- Docker Daemon作为主体,其中server接收,Engine执行(job作为最基本的工作执行单元)
- 镜像仓库
- 驱动模块,执行engine下来的各种任务
- 已下载容器镜像管理(Graph)
- libcontainer,一整套标准接口用于上层对容器的管理,隔离底层与上层,使得也能够运行在windows上
- kernel
Docker工作方式
- (类似github?)用户 dockerfile ==build==> 镜像 ==tag==push==> 远程==pull==> 本地(run)==commit==> 新镜像
Docker run
- 创建Docker容器所需的rootfs;
- 创建容器的网络等运行环境,并真正运行用户指令
Docker底层技术
- Namespace
- 隔离
- Cgroup
- 资源分配
- OverlayFS 层次文件系统
0 0
- 操作系统级虚拟化——学习笔记
- 操作系统级虚拟化之Docker学习应用实战
- 操作系统笔记---虚拟存储器
- 看操作系统虚拟化原理总结篇——硬件虚拟化中的CPU虚拟化
- 看操作系统虚拟化原理总结篇——软件虚拟化中的IO虚拟化
- 看操作系统虚拟化原理总结篇——硬件虚拟化中的IO虚拟化
- React学习笔记—虚拟DOM
- React学习笔记—虚拟DOM
- 清华大学《操作系统》学习笔记——第一章:操作系统概述
- 操作系统虚拟化原理总结篇——VMCS详解
- 学习笔记-服务器虚拟化
- 学习笔记-网络虚拟化
- 操作系统学习笔记——进程控制
- 操作系统学习笔记——线程
- 学习笔记——操作系统_Linux互斥锁
- 现代操作系统学习笔记——进程
- 操作系统之死锁——学习笔记
- 进程——《现代操作系统》学习笔记
- 排序算法
- matplotlib学习
- 字符串 POJ-1007
- Android中的ContentProvider中的重要点
- 网易云课堂 Linux内核分析(八)
- 操作系统级虚拟化——学习笔记
- 数据库的选择
- 解决Android Studio SVN忽略文件不生效
- 【Redis】--集群理解
- BZOJ1000[A+B Problem]题解--基础题
- WAVE文件格式分析
- [主席树] BZOJ2588: Spoj 10628. Count on a tree
- Java Eclipse中如何快速替换变量
- hdu1711 Number Sequence(KMP算法)