容器技术的几个事实

  • 容器技术的兴起起源于PaaS技术的普及
  • Docker公司发布的Docker项目具有里程碑式的意义
  • Docker项目通过"容器镜像",解决了应用打包这个根本性难题

什么是容器

  • 容器就是一种沙盒技术,把你的应用"装起来",让其能够方便的搬来搬去

进程

  • 一旦程序被执行起来,它就从磁盘上的二进制文件,变成了计算机内存中的数据,寄存器里的值,
  • 堆栈中的指令,被打开的文件,以及各种设备的状态信息的一个集合.
  • 像这样一个程序运行起来后的计算机执行环境的总和,就是进程

进程的动态表现

  • 进程的静态表现就是程序,平时都安安静静的待在磁盘上
  • 一旦运行起来,它就变成了计算机里的数据和状态的总和,这就是它的动态表现

容器的核心功能

  • 通过约束和修改进程的动态表现,为期创造出一个"边界"

容器的特性

  • 容器内的第一个进程的PID是1,其实是对被隔离的应用的进程空间做了手脚,
  • 使得这些进程只能看到重新计算过的进程编号,比如PID=1,可实际上,
  • 他们在宿主机的操作系统里,就是一个普通的进程

容器名称空间Namespace

  • Mount 挂载文件系统
  • UTS 主机名和域名
  • IPC 进程间通信
  • Network 网络
  • User 用户
  • PID 进程ID

Docker并不是"轻量级"虚拟化技术

  • 跟真实存在的虚拟机不同,在使用Docker时,并没有一个真正的"Docker容器"运行在宿主机里面
  • Docker项目帮助用户启动的,还是原来的应用进程,只不过在创建这些进程的时候,
  • Docker为他们加上了各种各样的Namespace参数,
  • 这时这些进程就会觉得自己是各PID Namespace里的第一号进程
  • 只能看到各自Mount Namespace里挂载的目录和文件,只能访问到各自Network Namespace里的网路设备
  • 仿佛在一个个"容器"里面,与世隔绝
最后修改:2019 年 08 月 05 日
如果觉得我的文章对你有用,请随意赞赏