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

5星 · 超过95%的资源 需积分: 9 330 下载量 36 浏览量 更新于2024-09-10 5 收藏 104KB PDF 举报
"这篇文章主要介绍了如何将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平台,实现了资源的高效管理和快速部署。