再谈容器应用基石——docker化


再谈容器应用基石——Docker化 孙宏亮 DaoCloud 2016.09.10 Agenda • 企业级应用现状 • 应用Docker化 • Docker化实践 – 日志管理 – 配置管理 – 监控 企业级IT架构 服务器 服务器 服务器 服务器 虚拟化 操作系统 操作系统 操作系统 中间件 应用 应用 应用 操作系统 X86/Power VMWare/KV M RHEL/Windo ws MQ/Cache Dev Ops 企业应用交付流程 开发 测试 运维 Docker的标准化 1.应用与基础设备边界的标准化 2.企业级应用交付流程标准化 应用Docker化 1. What? 2. Who? 3. How? Docker化实践 Dockerfile、Docker镜像与Docker容器 FROM ubuntu:14.04 VOLUME /data ADD run.sh / CMD [“./run.sh”] 进程 build ubuntu:14.04 VOLUME ADD CMD run Dockerfile Docker镜像 Docker容器 Docker镜像 Dockerfile定义一切 Docker化实践 本质:进程隔离,资源管理 • App-Centric的体现 • Single-Process 的真实 含义 文件系统(Docker镜像) Linux内核 资源隔离 资源控制 权限控制 P P P P P Docker容器 进程隔离 网络隔离 文件系统隔离 Docker化实践——环境 进程需要的一切 内核 操作系统发 行版 环境变量 执行代码或 文件 运行时环境 动态链接库 服务进程/ 内核进程 依赖包 配置文件 执行代码或 文件 配置文件 Dev Ops Ops Ops 日志采集架构 容器 (应用) 容器 (应用) 容器 (应用) 容器 (应用) ElasticSearch集群 fluentd fluentd fluentd stdout stderr Host 日志采集架构 容器 (应用) 容器 (应用) 容器 (应用) 容器 (应用) stdout stderr Host nothing nothing Why? Docker化实践——日志管理 docker logs有应用日志? 明明写的日志文件! 传统模式: -stdout&stderr -磁盘日志文件 -日志服务器 stdout&stderr Docker化实践——日志管理 本质:stdout&stderr 应用层面配合 重新编写日志逻辑 ——开发工程师 ——运维工程师 Docker化实践——日志管理 遗留世界的阻力,实在是。。。 日志文件 FROM base:1.00 ADD app.py / CMD [“python”, “app.py”] /var/log/app.log tail –f /var/log/app.log #!/bin/bash tail -f /var/log/app.log & exec python app.py run.sh FROM base:1.00 ADD app.py / CMD [“python”, “app.py”] ADD run.sh / RUN chmod +x run.sh CMD [“./run.sh”] 利? 弊? Docker化实践——日志管理 应用侵入性 管理便捷性 遗留应用 应用层适配 大,修改应用的日 志逻辑 方便,便于Docker层 统一化管理 侵入性 Dockerfile层适配 较小, 修改 Dockerfile 方便,便于Docker层 统一化管理 最佳 沿用传统模式 无 不利,管理难度大,不 利于日志采集与分析, 额外功能模块 Docker化实践——配置管理 硬编码! 配置文件! 配置管理中心! 配置 也是 状态 • 非自动化 • 非标准化 Docker化实践——配置管理 • 沿用传统模式——配置文件 ——使用挂载volume的方式 ——配置文件与宿主机耦合 部署成本 配置成本 Docker化实践——配置管理 • 采用环境变量方式 ——打包虚拟配置进入Docker镜像 ——打包配置进入Docker容器 ——完美支持编排工具compose ——运维工程师 ——开发工程师 Docker化实践——配置管理 • 环境变量与配置文件共存 ——修改Docker镜像执行入口 ——使用环境变量替换配置文件 dispatcher: image: dispatcher:1.0.1 links: - db:mysql ports: - "80" restart: always db: image: mysql:2.6.8 environment: - PASSWORD=example restart: always replace_env.sh config.yml Port: $PORT Password: $PASSWORD Port: 80 Password: example Dockerfile CMD Application Docker化实践——监控 还负责监控? 过往的监控——容器监控 容器监控 应用监控 = = 通用性 定制化 Docker化实践——监控 HEALTHCHECK 健康检查 Dockerfile 开发者定义 运维者统一接口查询 HEALTHCHECK curl --fail http://localhost:3000/ || exit 1 Docker化实践——监控 • 复杂部署 – 健康检查 – 依赖管理 • 标准化流程 –DevOps
还剩23页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

shuibingfy

贡献于2017-07-28

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf