资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2013/11/1轻量虚拟化技术 - docker实战分享 百度BAE 陈轶飞 2013-10.25纲要 一、轻量虚拟化技术 是什么? 涉及到哪些技术和知识? 使用领域 二、BAE与docker docker是什么? BAE为什么选择docker? BAE是如何使用docker的? 三、docker的发展2013/11/1轻量虚拟化技术 -是什么?以以Linux进程的视角来看进程的视角来看 进程运行的时候,周边的环境和资源有哪些? Linux内核 文件系统 网络系统 PID、UID、IPC等资源 内存、CPU、磁盘等资源 其它 每个进程的看到的周边环境都一样 所有进程共享这些资源2013/11/1轻量虚拟化技术 -是什么? 技术发展过程中,产生了这样的需求 资源隔离:资源隔离:不同进程,希望有自己独立的 周边环境 资源限制:资源限制:限制某些进程所能使用的资源 能进一步对一组进程一组进程进行上述隔离和限制轻量虚拟化技术 -是什么? 需求总结为: 为一组进程 分配独立的运行环境 文件系统 网络系统 PID、UID、UTS、mount、IPC空间 并能对它们能使用的资源从总体上进行限制 内存 CPU 网络流量 磁盘空间 磁盘读写频率 最好还能防止进程组之间互相干扰2013/11/1轻量虚拟化技术 -是什么? 轻量虚拟化,就是用来实现上述需求的技术 满足上述限制条件的进程组,叫做“轻量虚拟 机”,或者 Container wikipedia 定义 http:/en.wikipedia.org/wiki/Operating_system- level_virtualization2013/11/1轻量虚拟化技术 -是什么?感性的认识轻量虚拟化技术 -相关技术和开源项目 底层技术: namespace/cgroups/iptables/chroot/tc/quota veth union fs(AUFS) container管理 LXC/libvirt 安全相关 grsec/apparmor/SELinux 高级 docker/warden/Imctfy/openVZ轻量虚拟化技术 -相关技术和开源项目namespace/cgroups/netfilter/tc/veth/quota/union fsLXCdockerlibvirtwardenimctfy grsec apparmor SELinxcloudfoundry/heroku/dotcloud/appfog/openshiftopenvz轻量虚拟化技术 -适用领域 在一个资源隔离、受限的环境中执行任务 将一个执行环境整体迁移、复制 运行不安全的代码BAE与docker -docker是什么? 轻量虚拟机的整体解决方案 接口清晰、使用简单 竞品对比 warden lmctfyBAE与docker -BAE是什么?2013/11/1 http:/developer.baidu.com 百度面向开发者的PAAS平台 BAE2.0:基于沙盒技术的资源共享型PAAS平台 BAE3.0:基于Container技术的资源独享性PAAS平台BAE与docker -BAE为什么选择docker? 传统PAAS平台的困境 通过沙盒技术来实现资源隔离与资源限制 平台的开发和维护成本高 诸多限制,学习成本高 应用的迁移和开发成本高BAE与docker -BAE为什么选择docker? Container的出现带来了光明 干掉沙盒;通过Container技术在外层进行资 源隔离与限制 无任何语言层面的限制,开发者学习成本显著降低 支持新的编程语极其简单,平台开发和维护成本降低 业界趋势:新兴PAAS平台纷纷选择Container cloudfoudry openshift heroku dotcloud appfog activestateBAE与docker -BAE为什么选择docker? BAE2.0是一种基于沙盒技术的PAAS 我们也深受传统PAAS平台的困扰 注意到Container技术,开始前期的调研和摸索BAE与docker -BAE为什么选择docker? 首先和公司内部虚拟化团队合作摸索了一套方案: openstack + libvirt 功能上能满足基本需求 问题 没有考虑到最重要的一个需求: 需要频繁的创建和删除Container 要求创建和删除Container能在几秒内完成 实际创建Container要15秒以上,无法接受 对代码质量没有足够信心 缺少后续技术支持BAE与docker -BAE为什么选择docker?cloudfoundry的warden ruby dea与warden耦合太紧 社区活跃度不够BAE与docker -BAE为什么选择docker? 一次偶然机会,与docker布道 师 Jorome Petazzoni 的交流 对docker的评估 功能上满足主要需求 强悍:虚拟机的快速创建和删除能力 强悍: 增量式的镜像管理能力 代码简单易读,出问题有信心自己可以搞定 有dotcloud公司支持,社区活跃 度高,看好它的未来BAE与docker - 如何使用docker? 架构上的主要工作: 与我们自己的系统的整合2013/11/1BAE与docker - 如何使用docker? 功能上的主要工作 Docker的资源隔离功能基本满足需求 要解决的主要问题 更好的资源限制 更全面的安全限制BAE与docker - 如何使用docker? 技术上的一些判断和选择: 果断选择ubuntu系统 实现类似deang的agent模块; 合理的抽象,将docker作为“虚拟机管理”的一种 backend实现;(一旦docker出现不可控的风险,我 还可以切换到其它方案上) 解决宿主机对container的控制问题 刚开始使用 ssh 后改为 wshBAE与docker - 如何使用docker? 功能完善:资源限制 内存 CPU 磁盘空间 磁盘读写 网络带宽 setrlimitBAE与docker - 如何使用docker? 功能完善:安全限制 grsec :封堵内核漏洞 apparmor: 对container内部的能力进行限制 LXC自身的安全设置 lxc.drop_capabilities lxc. 严格的iptables规则 账号权限 用户代码仅能使用普通账号 root 随机密码 禁止 root 登录 恶意进程扫描 网络访问日志记录BAE与docker - 如何使用docker? docker私有仓库,解决镜像管理问题BAE与docker - 如何使用docker?遇到的一些问题 docker server重启后, container挂掉 我们的patch 已merge到主干 压力情况下的不稳定 ssh 远程执行命令不稳定 并发情况下iptables 偶尔会失败 删除container后会留下垃圾 垃圾检测和清除脚本 Docker server创建的线程过多docker的发展 -活跃的社区 Github GO语言类活跃度排名第一docker的发展 -逐步繁荣的生态圈 CoreOS Yandex - Cocaine 与redhat的合作 libvirt SELinux device-mapped filesystem 最新版OpenStack Havana 增加对docker的原生支 持docker的发展 -待解决的主要问题 安全 user namespace来解决root权限问题 SELinux增强安全性 支持更多的Linux发行版 目前仅支持 ubuntu 支持更多的架构 目前仅支持x86-64参考资料 http:/www.infoq.com/articles/docker-containers http:/en.wikipedia.org/wiki/Operating_system-level_virtualization http:/en.wikipedia.org/wiki/LXC http:/en.wikipedia.org/wiki/Cgroups http:/en.wikipedia.org/wiki/Linux_Containers http:/libvirt.org/ http:/linuxcontainers.org/ https:/wiki.ubuntu.com/LxcSecurity http:/lwn.net/Articles/236038/ http:/openvz.org/Main_Page http:/aufs.sourceforge.net/ http:/blog.docker.io/2013/08/containers-docker-how-secure-are-they/
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号