1.1 Docker是什么
- 使用最广泛的开源容器引擎
- 一种操作系统级的虚拟化技术
- 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
- 一个简单的应用程序打包工具
1.2 Docker设计目标
- 提供简单的应用程序打包工具
- 开发和运维职责逻辑分离
- 多环境一致性
1.3 Docker基本组成
- Docker Client:客户端
- Ddocker Daemon:守护进程
- Docker Images:镜像
- Docker Container:容器
- Docker Registry:镜像仓库
1.4 容器 vs 虚拟机
虚拟机:一种虚拟化技术。
目的:通过软件模拟一个完整的硬件功能,运行一个隔离计算机系统,提高计算机利用率
- App A :应用
- Bins/Libs:二进制/库
- Guest Os:客户端系统
- Docker:
- Host OS:主机系统
- Hypervisor:模拟虚拟化硬件
- Infrastructure:笔记本/台式机/服务器/云主机等
Container | VM | |
启动速度 | 秒级 | 分钟级 |
运行性能 | 接近原生 | 5%左右损失 |
磁盘占用 | MB | GB |
数量 | 成百上千 | 一般几十台 |
隔离性 | 进程级别 | 系统级(更彻底) |
操作系统 | 主要支持Linux | 几乎所有 |
封装程度 | 只打包项目代码和依赖关系,共享宿主机内核 | 完整的操作系统 |
1.5 Docker应用场景
- 应用程序打包和发布
- 应用程序隔离
- 持续集成
- 部署微服务
- 快速搭建测试环境
- 提供PaaS产品(平台即服务)