什么是容器
一种虚拟化方案
操作系统级别的虚拟化
只能运行相同或相似内核的操作系统
依赖于Linux内核特性:Namespace和Cgroups
什么是Docker
将应用程序自动部署到容器
Docker的目标
提供简单轻量的建模方式
指责的逻辑分离
快速高效的开发生命周期
鼓励使用面向服务的架构
Docker的使用场景
使用Docker容器开发、测试、部署服务。
创建隔离的运行环境
搭建测试环境
构建多用户的平台即服务(PaaS)基础设施
提供软件即服务(SaaS)应用程序
高性能、超大规范宿主机部署
Docker的基本组成
Docker Client客户端
Docker Daemon守护进程
Docker Image镜像
Docker Container容器
Docker Registry仓库
Docker客户端/守护进程
C/S架构
本地/远程
Docker Image镜像
容器的基石
层叠的只读文件系统
联合加载
Docker Container容器
通过镜像启动
启动和执行阶段
写时复制
Docker Registry仓库
公有
私有
Docker Hub
Docker的基本组成图
Docker在线演示地址
https://www.docker.com/tryit/
Docker依赖的Linux内核特性
Namespaces命名空间
Control groups 控制组(Cgroups)
Namespaces命名空间
编程语言
封装 代码隔离
操作系统
系统资源隔离
进程、网络、文件系统。。。
PID(Process ID)进程隔离
NET(Network)网络管理接口
IPC(InterProcess Communication)管理跨进程通信的访问
MNT(Mount)管理挂载点
UTS(Unix Timesharing System)隔离内核和版本标识
Control groups 控制组
用来分配资源,来源于google
资源限制
优先级设定
资源计量
资源控制
Docker容器的能力
文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用Cgroups将CPU和内存之类的资源独立分配给每个Docker容器