Docker原理及文件系统

Docker原理

  1. docker利用Linux的核心分离机制
    • 利用Namespace做资源隔离(使进程貌似拥有独立的操作系统环境)
    • 利用Cgroup做资源限制(限制一个进程组能够使用的资源上限)
    • 利用Union FS做容器文件系统的轻量级虚拟化技术(联合文件系统)
  2. 其他使用的技术
    • AUFS(chroot)建立不同Container的档案系统
    • SELinux 确保Container的网络安全
    • Netlink、Netfilter、Apparmor、Linux Bridge等
  3. Docker架构
    • Docker client 呼叫Docker Daemon

    • Docker daemon 执行Docker功能

    • libcontainer 和linux核心交流的library

    • docker image 建立容器用的镜像

      图1.png
    • docker client 呼叫 docker daemon,然后docker daemon通过libcontainer 呼叫linux的核心组件建立容器

  4. docker VS 虚拟机
    • 虚拟机有一层硬件虚拟机,上面安装新的操作系统
    • docker容器是由docker deamon拉起的一个个进程,本质上就是一个运行在宿主机上面的进程
    • 虚拟机的性能损耗较大,docker的安全性较差
    • 无法在windows上运行linux容器,如果容器内的应用对特定系统内核有要求也不能运行在不满足要求的宿主机上面

Docker文件系统

  1. docker容器文件系统是分层化的,最上面一层可读写,里面层都只读。
图2.png
  1. 查找文件时会一层一层向下寻找,直到找到。

  2. 用户面向的是叠加的文件系统(联合文件系统),联合文件系统用到了一个重要的资源管理技术,叫写时复制,也叫隐式共享,对于一个重复资源,修改时才会创建新资源。

  3. 任何对于文件的操作都会记录在容器层(最上面的读写层)

    • 修改文件:容器层会把在镜像层找到的文件拷贝到容器层,再进行修改。镜像层的只读版本仍然存在,但会被容器层的副本所隐藏
    • 删除文件:会在容器层内记录删除文件的记录

你可能感兴趣的:(Docker原理及文件系统)