- 传统虚拟机:虚拟出一套硬件,运行在一个完整的操作系统,在系统上运行所需应用进程.
- Docker:容器直接运行于宿主的内核.
依赖于Linux内核特性:Namespace和Cgroups(Control Group)
开发环境和部署环境相同,高效快速开发生命周期
使用场景:
容器进行开发->测试->部署服务.
Docker概念:
1.C/S架构 客户端–>守护进程 本地/远程
2.镜像 层叠的只读文件系统 –>联合加载
传统:root只读->引导性结束+完整性检查->读写
引导文件系统(引导后消除)->root文件系统(永远只读) ->联合加载
3.容器: 通过镜像启动(启动和执行阶段)
只读层复制到读写层副本,将源文件隐藏.写时复制.
4.仓库:镜像保存在仓库中
由多层文件系统联合组成.(后者依赖于前者) 分层存储架构.
1.镜像 特殊文件系统,包含配置参数.
2.容器 容器的实质是进程,容器运行在属于自己的命名空间. (隔离的空间)
每一个容器运行时,以镜像为基础层,之上创建一个当前容器的存储层(容器存储层).
3.仓库(Docker Registry)
每个仓库包含多个标签,每个标签对应一个镜像.
<Repository>+<Tag>
<仓库名>:<标签>指定镜像的版本 ubuntu:14.04 ubuntu:latest 默认
集中地存储,分发镜像的服务. (包含多个仓库)
- 公开服务:开放给用户使用和管理的Docker Registry
- Registry默认为:Docker Hub
Docker技术
- Namespaces命名空间 轻量级虚拟化
<1>PID 进程隔离
<2>Net 管理网络接口
<3>IPC 管理跨进程通信访问
<4>MNT 管理挂载点
<5>UTS 隔离内核和版本标识
2.Control groups控制组 管理隔离进程组
<1>资源限制
<2>优先级设置
<3>资源计量
<4>资源控制 (进程的隔离)
3.使用
1.文件系统隔离:容器都有自己的root文件系统
2.进程隔离:运行在自己的进程环境中
3.网络隔离:容器间虚拟网络接口和IP地址分开
4.资源隔离和分组:cgroups单独分配CPU和内存