什么是容器?
- 一种虚拟化的方案|| 操作系统级别的虚拟化,只能运行相同或相似内核的操作系统。
什么是Docker?
- 将应用程序自动部署到容器
- Go语言开源引擎 GitHub地址:https://github.com/docker/docker
Docker的目标?
- 提供简单轻量的建模方式,非常高的性能
- 快速高效的开发生命周期,开发-测试都使用相同的环境
- 鼓励使用面向服务的架构,高内聚、低耦合,单一应用
Docker使用场景?
- 使用Docker容器开发、测试、部署服务
- 创建隔离的运行环境
- 搭建测试环境
- 构建多用户的平台即服务(PaaS)基础设施
- 技工软件即服务(SaaS)应用程序
- 高性能、超大规模的宿主机部署
==========================================
Docker的基本组成:
- Docker客户端/守护进程
- C/S架构
- 本地/远程
- Docker镜像
- 容器的基石
- 层叠的只读文件系统 bootfs ==> rootfs(Ubuntu或者CentOS) ==>add emacs==>add Apache==>可写层
- 联合加载
- Docker Container容器
- 通过镜像启动
- 启动和执行阶段
- 写时复制(copy on write)
- Docker Registry 仓库
- 公有 Docker Hub 创建或保存或查找 镜像
- 私有 搭建自己的仓库
- Docker在线演示地址:https://www.docker.com/tryit/
=================================================
Docker容器相关技术简介
- Docker依赖的Linux内核特性
- Namespaces 命名空间
- PID(Process ID ) 进程隔离
- NET(Network) 管理网络接口
- IPC(InterProcess Communication) 管理夸进程通信的访问
- MBT(Mount) 管理挂载点
- UTS(Unix Timesharing System) 隔离内核和版本标识
- Control groups 控制组
- 用来分配资源,来源google Linux kernel
- 资源限制
- 优先级设定
- 资源计量,计算进程组使用了多少资源
- 资源控制
- Namespaces 命名空间
- Docker容器的能力
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境正
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
- 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器