docker概念
Docker核心概念
为什么使用docker
传统服务器部署存在以下问题
1、上线流程繁琐
开发->测试->申请资源->审批->部署->测试等环节
2、资源利用率低
普遍服务器利用率低造成过多浪费,导致成本过高
3、扩容/缩容不及时
业务高峰期扩容流程繁琐,上线不及时
已知业务增长——提前申请
未知业务增长——业务机增加承载量(约30%左右)
4、服务器环境臃肿
服务器越来越臃肿,对维护、迁移带来困难(为提高服务器利用率,多个项目在同一台服务器中)
5、环境不一致性
扩容的机器与现有机器容易存在差异化
Docker是什么
使用最广泛的开源容器引起
一种操作系统级的虚拟化技术
依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
一个简单的应用程序打包工具
Docker设计目标
提供简单的应用程序打包工具
开发人员和运维人员的职责逻辑分离(节省运维人员成本,持续发布有问题可以更快的解决)
开发人员职责:
开发项目
打包项目环境+代码成镜像
部署到容器平台
运维人员职责:怎么高效的去管理容器,
多环境保持一致性
Docker基本组成

由docker客户端、守护进程、镜像仓库组成
容器与虚拟机之间的区别

图析:
| VM(虚拟机) | Container(容器) |
|---|---|
| Computer Hardware(计算机硬件) | Computer Hardware(计算机硬件) |
| Host OS(主机系统/宿主机) | Host OS(主机系统/宿主机) |
| Hypervisor(运行物理机与操作系统之间的软件层-虚拟化核心,将虚拟出的虚拟机隔离) | Docker Engine(Docker引擎) |
| Guest OS(创建的虚拟机) | APP(使用Docker引擎运行在主机系统——线程隔离) |
| APP(虚拟机上运行的虚拟机,系统级隔离) |
差异:
| Contaier(容器) | VM(虚拟机) | |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 运行性能 | 接近原生(将进程封装——逻辑隔离) | 分钟级 |
| 磁盘占用 | MB | GB |
| 数量 | 成百上千 | 一般几十台 |
| 隔离性 | 进程级 | 系统级(更彻底) |
| 操作系统 | 主要支持linux | 几乎所有 |
| 封装程度 | 只打包项目代码和依赖关系,共享主机内核 | 完整的操作系统 |
容器解决的问题:
1.容器提供一个基本独立的环境,实现容器隔离,资源限制
2.主要解决应用层面问题,应用快速部署、高效管理
虚拟机:
1.提升服务器资源利用率
2.提供一个完全隔离的环境
Docker应用场景
应用程序打包处理和发布
应用程序隔离
持续集成
部署微服务(微服务升级不会影响整体系统)
快速搭建测试环境
提供PaaS产品(平台即服务)

浙公网安备 33010602011771号