
打造Docker虚拟机:兼容传统运维与微服务

"这篇文章主要介绍了如何将Docker容器改造得更接近虚拟机,以便于在保持原有运维习惯的同时,利用Docker的优势。作者裴彤来自搜狗平台架构部,分享了这一过程中的四个关键环节:制作系统镜像、处理网络、解决存储问题以及监控指标,并提到了其他一些挑战和解决方案。"
1. **制作系统镜像**:
- 基于Centos6.6构建Docker镜像,并设置ENTRYPOINT和CMD以模拟启动流程。
- 遇到的问题是sshd和crond等服务无法正常启动,通过nsenter和cgroup解决了服务启动和渗透执行的问题。
- 开机时,通过指定特定文件并自动执行,确保服务能够启动。
2. **网络配置**:
- 关闭宿主机的docker0网桥和NAT转发,建立直连网桥,确保容器内的IP可以通过docker环境变量传递。
- 每次启动容器时,宿主机创建veth接口并与网桥连接,容器内部生成网络配置并执行service network restart,实现IP和路由的生效。
- 如有需要,可以使用OpenvSwitch增强网络功能。
3. **存储管理**:
- 使用宿主机的本地存储,创建LVM卷,格式化后挂载到容器中,通过-v参数传递。
- 分别处理系统盘、代码盘和数据盘,利用cgroup限制LV卷的IOPS和带宽。
- 在Centos6.6上效果不佳,但在Centos7.1上表现良好。
4. **监控与性能**:
- 通过收集cgroup和/proc信息进行监控,并开发sac-mem和sac-cpu替代工具,因容器内的某些系统命令(如free、mpstat、top)可能不准确。
- 注意某些应用会自动检测CPU核数,需避免因此引发的问题。
5. **其他挑战**:
- 容器中的电源管理命令如reboot、shutdown无效,需要通过页面操作实现。
- 不同应用可能需要不同的内核参数,建议根据应用类别划分容器集群。
- 还需考虑宿主机、交换机和机房的容灾策略。
6. **虚机管理和IaaS平台**:
- 创建了一个简易的IaaS平台,包括API接口,可以快速按需创建具有指定内存、CPU、硬盘和操作系统环境的“虚机”。
- 实现虚机的生命周期管理,包括快照和重置功能,利用Docker镜像机制。
- 仅用一个人力和三个月的时间完成,未使用分布式存储。
通过以上步骤,公司能够在保留原有运维习惯的同时,逐步引入Docker的优势,构建出一个类似虚拟机的Docker环境,最终形成一套简易的IaaS平台,实现了资源的高效管理和快速部署。
相关推荐








腾讯开发者
- 粉丝: 1499
最新资源
- C++实现KD树的数据结构与应用
- YFSkins控件实现界面换肤与多语言切换
- JavaME实战教程:开发战机逃亡手机游戏源码解析
- 轻松掌握高效PDF阅读器的使用技巧
- vc++中多色彩动态曲线绘制类的应用与实现
- 掌握jQuery EasyUI 1.2.1及API的完整指南
- C#自动升级程序设计实例解析
- 下载10个酷炫FLASH导航菜单源码
- MyEclipse中Freemarker插件的使用与版本
- 简单易用的AJAX TreeGrid控件3.0版本发布
- 易语言实现的局域网文件传输工具
- RFHUTIL V4.0:MQ数据读写测试工具新版本发布
- 数据库数据记录快速转化成树实例的方法
- ADSL密码查询工具--轻松查看账号信息
- nginx-0.8.36压缩包及快速使用指南
- DELPHI7抽奖软件源码解析与参考
- 学生宿舍管理系统SQL与VB实现
- MFC界面选择的下载程序源码
- 全面汉化WinDbg官方文档,让调试更轻松
- 图象模式识别VC++源代码实现详解
- 深入解析SLR(1)分析器的构造方法及课程设计
- 自定义CRC16校验器与源码解析
- 最新Struts2教程讲义:基础到高级技巧全面解读
- Matlab图像模板匹配源码详解与应用