Docker基本概念与架构


什么是容器?

  • 一种虚拟化的方案
  • 操作系统级别的虚拟化
  • 只能运行相同或相似内核的操作系统
  • 依赖于Linux内核特性:Namespace和Cgroups(Control Group)

Linux容器技术 vs 虚拟机

【Docker】基本概念与架构

什么是Docker?

  • 将应用程序自动部署到容器
  • Go语言开源引擎 Github地址:https://github.com/docker/docker
  • 2013年初 dotCloud
  • 基于Apache2.0开源授权协议发行

Docker的目标

  • 提供简单轻量的建模方式
  • 职责的逻辑分离
  • 快速高效的开发生命周期
  • 鼓励使用面向服务的架构

Docker的使用场景

  1. 使用Docker容器开发、测试、部署服务。
  2. 创建隔离的运行环境
  3. 搭建测试环境
  4. 构建多用户的平台即服务(PaaS)基础设施
  5. 提供软件即服务(SaaS)应用程序
  6. 高性能、超大规模的宿主机部署

Docker的基本组成

  • Docker Client客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • Docker Container容器
  • Docker Registry仓库

Docker客户端/守护进程

  • C/S架构
  • 本地/远程

【Docker】基本概念与架构

Docker Image镜像

  • 容器的基石
  • 层叠的只读文件系统
  • 联合加载(union mount)

【Docker】基本概念与架构

Docker Container容器

  • 通过镜像启动
  • 启动和执行阶段
  • 写时复制(copy on write)

【Docker】基本概念与架构

Docker Registry仓库

  1. 公有
  2. 私有
  3. Docker Hub

【Docker】基本概念与架构

Docker容器的相关技术简介

Docker依赖的Linux内核特性

  • Namespaces命名空间
  • Control groups(cgroups)控制组

Namespaces命名空间:

  • 编程语言:封装-->代码隔离
  • 操作系统:系统资源的隔离(进程、网络、文件系统...)

Namespace命名空间的五种隔离技术

  • PID(Process ID)进程隔离
  • NET(Network)管理网络接口
  • IPC(InterProcess Communication)管理跨进程通信的访问
  • MNT(Mount)管理挂载点
  • UTS(Unix Timesharing System)隔离内核和版本标识

Control groups控制组

Control groups控制组可以做什么?

  • 资源限制
  • 优先级设定
  • 资源计量
  • 资源控制

Docker容器的能力

  • 文件系统隔离:每个容器都有自己的root文件系统
  • 进程隔离:每个容器都运行在自己的进程环境中
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
  • 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

 

相关文章: