转载文章笔记,Docker 核心技术主要从以下几个方面实现:

  • 进程命名空间,通过进程命名空间,将 docker 进程和 宿主进程进行隔离
  • 网络,docker 网络模式使用桥接的方式进行

    我的理解是,docker 层做了一个 路由器,所有的容器进程通过该路由器网关去连接访问外部网络

  • 文件隔离,通过加载虚拟挂载点,重设 root 目录等等,将文件系统进行隔离
  • 物理资源的隔离,通过 CGroups(Control Groups),限制容器在 CPU,内存,磁盘IO、网络上的使用率,以此来隔离容器间的资源分配。
  • Docker 镜像的概念:Dockerfile 中的每条命令会形成一个 diff 层,每个 diff 层都是只读的,只有最上面的层是可写的。这个操作通过 UnionFS 实现。通过 AUFS(Advanced UnionFS),可以将未修改的镜像层进行联合挂载,从而提高读写效率。

References