裴彤揭秘:Docker转型为轻量级虚拟机之旅

需积分: 9 29 下载量 41 浏览量 更新于2024-09-10 收藏 104KB PDF 举报
在搜狗平台架构部的裴彤分享的实践中,他探讨了如何将Docker转变为一种虚拟机(VM)般的解决方案。Docker原本作为轻量级容器技术,因其快速部署、资源隔离等优点受到开发者喜爱,但在大规模迁移应用时遇到了一些挑战。裴彤详细介绍了打造虚机过程中的四个关键环节: 1. **系统镜像制作**: - 起步于Centos 6.6,裴彤强调了构建基础镜像的重要性,如设置ENTRYPOINT和CMD脚本,以确保容器在启动时正确运行。遇到的问题包括SSHD和cron等服务无法正常启动,解决方法是使用nsenter技术执行必要的进程,并注意cgroup资源控制。 2. **网络管理**: - 关闭宿主机的docker0网桥和NAT转发,创建专用直连网桥,并设定虚机的IP地址。在启动时,通过宿主机与虚机间的veth接口通信,实现网络配置的动态更新。可能还需要借助OpenvSwitch进行高级网络配置。 3. **存储解决方案**: - 利用宿主机本地存储,创建逻辑卷(LV)并挂载到容器,通过-v选项传递。针对性能需求,使用cgroup对LV卷进行IOPS和BPS限制。在Centos 6.6上可能效果不佳,而在Centos 7.1上表现较好。 4. **性能监控与调整**: - 收集容器的Cgroup和/proc信息,但需注意容器内部命令的准确性。裴彤引入了替代工具如sac-mem和sac-cpu,以达到与VM相近的效果,同时考虑应用的特定需求,比如CPU核心数探测。 在单个虚机构建完成后,裴彤扩展到了宿主机和虚拟机集群的管理: - 建立数据库记录资源和虚机信息,支持创建、删除、修改和查询操作。 - 自动化资源分配,如根据可用资源选择宿主机并分配IP地址。 - 考虑容灾策略,包括跨宿主机、交换机和数据中心的备份。 - 开发API接口,提供按需创建虚机的服务,支持内存、CPU、硬盘和操作系统环境的选择,以及对虚机生命周期的全面管理。 整个项目中,裴彤仅一人在三个月内完成,未采用分布式存储,而是利用了Docker的底层机制。如果使用更全面的虚拟化技术如KVM或OpenStack,可能会有更复杂的部署和管理要求。然而,这个案例展示了如何巧妙地利用Docker的优势来构建一套简洁的IaaS平台,满足实际业务场景中的需求。