一、为什么使用容器
1. 上线流程繁琐
- 开发->测试->申请资源->审批->部署->测试等环节
2. 资源利用率低
- 普遍服务器利用率低,造成过多浪费
3. 扩容/缩容不及时
- 业务高峰期扩容流程繁琐,上线不及时
4. 服务器环境臃肿
- 服务器越来越臃肿,对维护、迁移带来困难
5. 环境不一致性
二、Docker是什么
- 使用最广泛的开源容器引擎
- 一种操作系统级的虚拟化技术
- 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
- 一个简单的应用程序打包工具
三、Docker设计目标
- 提供简单的应用程序打包工具
- 开发人员和运维人员职责逻辑分离
- 环境保持一致性
四、Docker基本组成
五、Docker核心组件
- Daemon# Docker守护进程,负责与Docker Clinet交互,并管理镜像、容器。
- Containerd# 是一个简单的守护进程,向上给Docker Daemon提供接口,向下通过containerd-shim结合runC管理容器。
- runC# 一个命令行工具,它根据OCI标准来创建和运行容器。
六、Docker应用场景
- 应用程序打包和发布
- 应用程序隔离
- 持续集成
- 部署微服务
- 快速搭建测试环境
- 提供PaaS产品(平台即服务)