容器技术原理

容器技术原理

  • chroot

    通俗地说 ,chroot 就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录,这个跟我们在一个容器中是很相似的。

  • docker是利用Linux的Namespace、Cgroups和联合文件系统三大机制来实现的,基本原理是使用Namespace做主机名、网络、PID等

    资源的隔离,使用Cgroups对进程或者进程组做资源(eg: CPU、MEMORY)的限制,联合文件系统用于镜像构建和容器运行环境。

    • Namespace

      Namespace 是 Linux 内核的一项功能,该功能对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源。Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源。

      Docker 主要用到以下五种命名空间。

      • pid namespace:用于隔离进程 ID。

      • net namespace:隔离网络接口,在虚拟的 net namespace 内用户可以拥有自己独立的 IP、路由、端口等。

      • mnt namespace:文件系统挂载点隔离。

      • ipc namespace:信号量,消息队列和共享内存的隔离。

      • uts namespace:主机名和域名的隔离。

    • Cgroups

      Cgroups 是一种 Linux 内核功能,可以限制和隔离进程的资源使用情况(CPU、内存、磁盘 I/O、网络等)。在容器的实现中,Cgroups 通常用来限制容器的 CPU 和内存等资源的使用。

    • 联合文件系统

      联合文件系统,又叫 UnionFS,是一种通过创建文件层进程操作的文件系统,因此,联合文件系统非常轻快。Docker 使用联合文件系统为容器提供构建层,使得容器可以实现写时复制以及镜像的分层构建和存储。常用的联合文件系统有 AUFS、Overlay 和 Devicemapper 等。

现在学习还不晚;
原文地址:https://www.cnblogs.com/ainimore/p/14359505.html