容器技术

Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

由于容器是进程级别的,相比虚拟机有很多优势

容器并没有一个很明确的定义,但以 Docker 为例,会用到下面的这些 feature:

  • pivot_root
  • cgroup
  • namespace
  • capability
  • seccomp-bpf
  • overlay 文件系统

在一个服务器上运行了多个业务进程,要怎样才能避免他们互相影响?通过 cgroup 限制各个进程的性能,使用 pivot_root 和 overlay 文件系统隔离文件,用 capability 功能限制进程和用户的权限,再用 namespace 把进程信息和网络互相隔离,最后用 seccomp 屏蔽一些敏感的系统调用