docker容器基础(一)

那个人后来 / 2023-07-31 / 原文

前言


------源于PaaS技术的普及而兴起的容器技术,必然随着诸多云平台的出现大放光彩。Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。

容器是什么?


------容器是一种沙盒技术,将你的应用装入盒子,即与其他应用进行了隔离,又便于搬运。

容器边界


------容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。进程的动态表现为程序运行时计算机中相关的数据和状态的总和。
------Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。

Namespace 技术

容器是个特殊的进程,在启动时设置Namespae可选参数,使其只能“看到”限定的资源、文件、设备、状态,或者配置。

  • PID Namespace
    用于隔离进程PID信息。

  • Mount Namespace
    用于隔离进程挂载点信息。

  • UTS Namespace
    提供进程主机名或域名隔离能力。

  • IPC Namespace
    提供进程间通信隔离能力。

  • Network Namespace
    用于隔离进程的网络设备和配置。

  • User Namespace
    提供进程用户隔离能力。

Cgroups 技术

Linux Cgroups 是 Linux 内核中用来为进程设置资源限制的一个重要功能,限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。此外,Cgroups 还能够对进程进行优先级设置、审计,以及将进程挂起和恢复等操作。

容器镜像


容器里的应用进程具有一份完全独立的文件系统,而这个挂载在容器根目录上、用来为容器进程提供隔离后执行环境的文件系统,就是“容器镜像”。它还有一个更为专业的名字,叫作:rootfs(根文件系统)。

  • rootfs
    或者说容器镜像,会包括如下所示的一些目录和文件,比如 /bin,/etc,/proc 等等:

$ ls /
bin dev etc home lib lib64 mnt opt proc root run sbin sys tmp usr var