共计 2225 个字符,预计需要花费 6 分钟才能阅读完成。
理解驱动 Docker 的核心技术将让您更深刻地理解 Docker 的工作原理,并有助于您更无效地应用该平台。
Linux 容器(LXC)
Linux 容器(LXC)是 Docker 的根底。LXC 是一种轻量级的虚拟化解决方案,容许多个隔离的 Linux 零碎在单个主机上运行,无需全功能的虚拟化。LXC 无效地以平安和优化的形式隔离应用程序及其依赖项。
控制组(cgroups)
控制组(cgroups)是 Linux 内核的一个性能,容许调配和治理资源,例如 CPU、内存和 I /O,到一组过程。Docker 利用 cgroups 来限度容器应用的资源,并确保一个容器不会垄断主机零碎的资源。
联结文件系统(UnionFS)
UnionFS 是一个文件系统服务,容许在单个、对立的视图中叠加多个文件系统。Docker 应用 UnionFS 为镜像和容器创立分层办法,这使得共享公共文件和更快的容器创立成为可能。
命名空间
命名空间是另一个 Linux 内核个性,提供过程隔离。它们容许 Docker 创立名为容器的隔离工作区。命名空间确保容器内的过程不能烦扰容器外或主机零碎上的过程。有几种类型的命名空间,如 PID、NET、MNT 和 USER,每个命名空间负责隔离过程的不同方面。
命名空间
命名空间是 Docker 用于提供容器之间隔离的核心技术之一。在本节中,咱们将简要探讨命名空间是什么以及它们如何工作。
命名空间是什么?
在 Linux 内核中,命名空间是一种性能,容许隔离各种系统资源,使得过程及其子过程可能看到与其余过程拆散的零碎子集。命名空间有助于创立形象层,将容器化的过程与彼此和主机零碎离开。
Linux 中有几种类型的命名空间,包含:
- PID (过程 ID):隔离过程 ID 号码空间,这意味着容器内的过程只看到它们本人的过程,而不是主机或其余容器中的过程。
- Network (NET):为每个容器提供网络堆栈的独自视图,包含其本人的网络接口、路由表和防火墙规定。
- Mount (MNT):以这样的形式隔离文件系统挂载点,以便每个容器都有本人的根文件系统,并且挂载的资源仅呈现在该容器内。
- UTS (UNIX Time Sharing System):容许每个容器领有本人的主机名和域名,与其余容器和主机零碎离开。
- User (USER):在容器和主机之间映射用户和组标识符,因而能够为容器内的资源设置不同的权限。
- IPC (过程间通信):容许或限度不同容器中的过程之间的通信。
Docker 如何应用命名空间
Docker 应用命名空间为容器创立隔离的环境。当容器启动时,Docker 会为该容器创立一组新的命名空间。这些命名空间仅实用于容器外部,因而在容器内运行的任何过程都能够拜访一组与其余容器以及主机零碎隔离的系统资源的子集。
通过利用命名空间,Docker 确保容器真正具备可移植性,能够在任何零碎上运行,而不会与运行在同一主机上的其余过程或容器发生冲突或烦扰。
总之,命名空间提供了一种资源隔离的级别,使得在同一主机上运行具备独立系统资源的多个容器成为可能,而它们之间不会互相烦扰。这是 Docker 容器技术的支柱性特色。
cgroups
cgroups或 control groups 是 Linux 内核的一个性能,它容许您在运行零碎上的过程组之间调配和治理资源,例如 CPU、内存、网络带宽和 I /O。它在提供资源隔离和限度运行容器能够应用的资源方面施展着至关重要的作用。
Docker 利用 cgroups 对容器进行资源束缚,从而使它们具备统一和可预测的行为。以下是 cgroups 在 Docker 容器上下文中的一些要害性能和长处:
资源隔离
cgroups 有助于将每个容器限度在特定的资源集上,确保多个容器之间偏心共享系统资源。这能够在不同的容器之间实现更好的隔离,以便不良行为的容器不会耗费所有可用资源,从而对其余容器产生负面影响。
限度资源
应用 cgroups,您能够设置容器应用的各种系统资源的限度,例如 CPU、内存和 I /O。这有助于避免单个容器耗费过多的资源,从而对其余容器或主机零碎造成性能问题。
优先解决容器
通过调配不同的资源份额,cgroups 容许您优先或优先解决某些容器。这在某些容器比其余容器更为要害或在高资源争用状况下十分有用。
监控
cgroups 还提供监督单个容器资源应用的机制,这有助于理解容器性能并辨认潜在的资源瓶颈。
总的来说,cgroups 是 Docker 的一个重要的根底技术。通过利用 cgroups,Docker 提供了一个强壮和高效的容器运行时环境,确保容器具备所需的资源,同时保持良好的整体零碎性能。
Docker 引擎
“Docker Desktop”和“Docker 引擎”之间常常存在混同。Docker 引擎专指 Docker 桌面组件的一个子集,它是收费且开源的,只能在 Linux 上装置。
Docker 引擎包含:
- Docker 命令行界面(CLI)
- Docker 守护过程(dockerd),公开 Docker 应用程序编程接口(API)
Docker 引擎能够构建容器镜像,从容器镜像运行容器,并且通常能够执行 Docker 桌面的大多数操作,但它仅实用于 Linux,并且不提供 Docker 桌面提供的所有开发人员体验。
最初
为了不便其余设施和平台的小伙伴观看往期文章,链接奉上:
公众号 Let us Coding
,牛客 , 知乎 , 开源中国 ,CSDN, 思否 , 掘金 ,InfoQ, 简书 , 博客园 , 慕课 ,51CTO,helloworld, 腾讯开发者社区 , 阿里开发者社区
看完如果感觉有帮忙,欢送 点赞、珍藏 和关注