docker 学习笔记(一)

参考自:
http://www.jikexueyuan.com/course/820.html

什么是容器

一种虚拟化解决方案,是一种操作系统级别的虚拟化,只能运行在相同或者相似的操作系统上,依赖于linux的namespace根cgroups。
docker 学习笔记(一)_第1张图片

什么是Docker

容器本身比较复杂,不易安装,管理和实现自动化。docker出现就是为了改变这些。Docker是一种可以把程序自动部署到容器中的一种开源引擎
docker 可以将应用程序自动部署到容器,使用Go语言编写,2013出由dotCloud公司发布,基于Apache 2.0 开源授权协议发行。

docker特别之处:

在虚拟化的容器环境中,增加一个应用程序部署引擎,提供一个轻量、快速的环境,能够运行开发者程序,并方便高效的程序从开发者环境部署到测试环境,然后再部署到生产环境。

Docker依赖的linux内核特性

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

Namespaces

在编程语言中用来封装,实现代码隔离
在操作系统中用来提供系统智源的隔离,进程、网络、文件系统

docker使用了5种命名空间:

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

cgoups

前面隔离的资源是怎么管理起来的呢?这就要用到cgroups,cgroups就是为容器而生的

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

Docker容器的能力

namespace跟cgoups 使得docker拥有:

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

Docker 的基本组成

  1. Docker Client 客户端
  2. Docker Daemon 守护进程
  3. Docker Image 镜像 :容器基于镜像启动和运行,是一个成叠的只读文件系统,联合加载:
    docker 学习笔记(一)_第2张图片
  4. Docker Container 容器:通过镜像来启动,docker会在该Image的最顶层加载一个可写文件系统,当要读诶只读的Image中改写东西时,就复制一份到可写层(写时复制 copy on write)
    docker 学习笔记(一)_第3张图片

  5. Docker Registry 仓库:分 公有(Docker Hub)、私有

你可能感兴趣的:(linux,docker,虚拟化)