Docker简介

什么是容器

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

虚拟机与容器对比


虚拟机占用空间大,消耗CPU和内存。

而容器相对来说体积小,使用更少的资源,他们不运行完整的操作系统,启动速度更快。

什么是Docker

  • Docker时Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
  • Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
  • Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。
    总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

Docker的目标

  • 提供简单轻量的建模方式
  • 职责的逻辑分离(开发和运维人员各负其职)
  • 快速高效的开发声明周期
  • 鼓励使用面向服务架构

Docker使用场景

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

Docker基本组成

  • Docker Client 客户端 C/S架构
  • Docker Daemon 守护进程
  • Docker Image 镜像 容器的基石 层叠的只读文件系统 联合加载(union mount)
  • Docker Container 容器 通过镜像启动 启动和执行阶段 写时复制
  • Docker Registry 仓库 分为公有/私有 DockerHub

Docker 技术相关

Docker 依赖linux内核特性
– Namespaces 命名空间
– Control groups(cgroups)控制组
Namespaces 命名空间:提供了系统资源隔离,包括进程,网络,文件系统等。Docker使用了5种命名空间的隔离:
1.PID (Process ID)进程隔离
2.NET (network) 管理网络接口
3.IPC (InterProcess Communication) 管理跨进程通信的访问
4.MNT(Mount) 管理挂载点
5.UTS(Unix Timesharing System)隔离内核和版本标识
隔离资源的管理使用Contronl groups 控制组
Contronl groups 是用来分配资源,来源谷歌,在linux kernel2.6.24版本中加入。
Contronl groups提供了:
1.资源限制
2.优先级限定
3.资源计量
4.资源控制
这两个提供给了Docker:
1.文件系统隔离:每个容器都有自己的root文件系统
2.进程隔离:每个容器都运行在自己的进程环境中
3.网络隔离:容器间的虚拟网络接口和IP地址都是分开的
4.资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

发表评论

电子邮件地址不会被公开。