一、运维工作中经常遇到的问题:
1. 硬件资源利用率的问题,造成部分成本的浪费
在网站功能中不同的业务场景有计算型的,有IO读写型的,有网络型,有内存型的,集中部署应用就会导致资源利用率不合理的问题。比如,一个机器上部署的服务都是内存密集型,那么CPU资源就都很容易浪费了。
2. 单物理机多应用无法对无法进行有效的隔离,导致应用对资源的抢占和相互影响
一个物理机器跑多个应用,无法进行所使用的CPU,内存,进程进行限制,如果一个应用出现对资源的抢占问题,就会引起连锁反应,最终导致网站部分功能不可用。
3. 环境、版本管理复杂,上线部署流程缺乏,增加问题排查的复杂度
由于内部开发流程的不规范,代码在测试或者上线过程中,对一些配置项和系统参数进行随意的调整,在发布时进行增量发布,一旦出现问题,就会导致测试的代码和线上运行的代码是不一致的,增加了服务上线的风险,也增加了线上服务故障排查的难度。
4. 环境不稳定,迁移成本高,增加上线风险
在开发过程中存在多个项目并行开发和服务的依赖问题,由于环境和版本的复杂性很高,不能快速搭建和迁移一个环境,导致无法在测试环境中无法模拟出线上的流程进行测试,很多同学在线上环境进行测试,这里有很高的潜在风险,同时导致开发效率降低。
5. 传统虚拟机和物理机占用空间大,启动慢,管理复杂等问题
传统虚拟机和物理机在启动过程进行加载内核,执行内核和init进行,导致在启动过程占用很长时间,而且在管理过程中会遇到各种各样的管理问题。
二、Docker的工作原理和机制,看下图形象的示例:Docker集装箱式的工作
Docker常用的操作
二、运维工作中Docker与常用的集成工具有哪些?配置管理(anisble,saltstack,jumperserver)
持续集成和持续部署(Jenkins,git,gitlab)
服务编排(k8s,swarm,mesos,rancher)
网络模型(host,bridge,Flannel,Calico)
Docker仓库(Registry,Habor)
服务注册(etcd)
服务发现(confd)
日志平台(ELK, loghub)
监控平台(zabbix,cadvisor,prometheus,grafana)
开发工具(shell,python)
三、如何建立起合适自己工作的Docker容器平台?