隔离性

应用程序要跑,就需要有一个环境沙箱,这个封闭的环境保证应用不会与其它的应用冲突,所有应用涉及的依赖都只在这个环境里面,不会在另外的环境。

Linux Namespace是linux内核提供的资源隔离方案

  • 可以为进程分配不同的namespace;
  • 保证不同的namespace资源独立分配、进程彼此隔离;

Linux对Namespace操作方法

  • clone
    在创建新进程的系统调用时,可以通过 flags 参数指定需要新建的 Namespace 类型
  • setns
    该系统调用可以让调用进程加入某个已经存在的 Namespace 中:
    Int setns(int fd, int nstype)
  • unshare
    该系统调用可以将调用进程移动到新的 Namespace 下:
    int unshare(int flags)

便携性

docker应用环境可以做到一处启用,linux环境随处可用。

可配额

docker应用的资源是可以随需配置的。

安全性

docker不会对主机造成影响,也不会对其它宿主机进行造成影响(超配额不会导致其它进程异常