Docker 基本理解
容器: 磁盘占用空间更少
虚拟机: 应用 依赖的库 完整的操作系统 docker : 应用. 依赖的库
虚拟机: 模拟硬件行为 耗内存 cpu
docker 不需要
由于容器不容易安装和管理 docker可以 把开发的应用程序自动部署到容器里的开元引擎
Docker作用
1.开发 测试 部署服务
2.隔离的运行环境
3.搭建测试环境
docker 基本组成
docker client 客户端 :c/s 本地/远程
docker daemon :守护进程
docker image 镜像 :容器的基石 容器的源代码 启动容器的各种条件 层叠只读文件
docker container 容器 :通过镜像启动 写时复制 copy on write run命令启动容器
:创建新容器时 docker会构建出一个镜像栈 栈的最顶层添加可写层
docker registry 仓库 : 用仓库保存用户构建的镜像 通过仓库查找镜像 pull 下载镜像 公有 docker hub 私有
通过客户端访问守护进程 操作容器 容器存储在镜像里 而镜像保存在仓库里
docker 依赖 linux 内核特性
namespaces 命名空间
封装 :代码的隔离
操作系统 :系统资源的隔离 (进程 文件系统 网络 .....)
PID (process ID) :进程的隔离
NET (Network) :管理网络接口
IPC (InterProcess Communication):管理跨进程通信的访问
MNT(Mount) :挂载点 文件系统相关隔离
UTS(Unix Timesharing System) :隔离内核和版本标识
Control groups是linux 提供的 限制 记录 隔离 进程组 所使用的机制 Control groups 就是为了实现容器而生
Control groups 提供功能
资源限制 :给进程组设定内存使用上限
优先级设定 :哪些优先使用
资源计量 :计算进程组使用了多少资源 计费系统中很重要
资源控制 :可以将进程组挂起和恢复
docker 容器的能力
文件系统的隔离 :每个容器都有自己的root 文件系统
进程的隔离 :每个容器都运行在自己的进程环境中
网络隔离 :容器间的虚拟网络接口和IP 地址都是分开的
资源隔离和分组 :使用cgroup 将CPU 和内存之类的资源独立分配给每个docker 容器