容器

603 阅读1分钟

1、本质

  • 容器的本质是一个受限制的进程
  • 容器技术其实和一种沙箱隔离技术
  • Cgroups技术用于限制容器进程的资源使用上限
  • Namespace机制用于隔离容器进程,提供一个新的进程空间
  • 利用chroot技术切换容器进程的根目录(Change Root )

2、容器代表

  • Docker(最为经典)
  • Rocket

3、容器优点

  • 利用镜像(image)来打包应用以及依赖环境(一个完整操作系统的所有文件和目录 )
  • 利用镜像可以实现"一次打包到处运行"
  • 不需要guest OS,更加轻量敏捷
  • 单进程模式,即一个容器运行一个应用,容器进程与应用进程"同生共死",方便容器的编排管理(容器进程是容器空间中的1号进程,容器空间中的其他进程是该进程的子进程)

4、容器的缺点

  • Namespace机制隔离不彻底,容器程序依然共享主机的内核,许多资源和对象没法隔离(例如时间)
  • Cgroups机制隔离不彻底,容器进程依旧可以访问主机的/proc文件系统,在容器里执行 top 指令,显示的信息是宿主机的 CPU 和内存数据,而不是当前容器的数据

5、其他

一个正在运行的 Linux 容器,其实可以被“一分为二”地看待:

  • 一组联合挂载在 /var/lib/docker/aufs/mnt 上的 rootfs,这一部分我们称为“容器镜像”(Container Image),是容器的静态视图;
  • 一个由 Namespace+Cgroups 构成的隔离环境,这一部分我们称为“容器运行时”(Container Runtime),是容器的动态视图。