共计 884 个字符,预计需要花费 3 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Docker 的底层实现所依赖的关键技术是什么,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
底层技术
Docker 是用 Go 编写的,它利用了几个 Linux 内核特性来提供我们所看到的功能。
名称空间
Docker 利用一种称为名称空间的技术来提供我们称之为容器的隔离工作空间。运行容器时,Docker 会为该容器创建一组名称空间。
这提供了一个隔离层:容器的每个方面都在其自己的名称空间中运行,并且在其外部没有访问权限。
Docker 使用的一些名称空间包括:
pid 命名空间:用于进程隔离(pid: 进程 ID)。
网络名称空间:用于管理网络接口(网络:网络)。
ipc 名称空间:用于管理对 ipc 资源的访问(ipc:进程间通信)。
mnt 命名空间:用于管理装入点(mnt:mount)。
uts 名称空间:用于隔离内核和版本标识符。(UTS:Unix 分时系统)。
对照组
Docker 还使用了另一种称为 cgroups 或 control Group 的技术。隔离运行应用程序的关键是让它们只使用您想要的资源。这确保了容器是主机上良好的多租户公民。控制组允许 Docker 将可用硬件资源共享给容器,并在需要时设置限制和约束。例如,限制特定容器的可用内存。
联合文件系统
Union 文件系统,或 UnionFS,是通过创建层来操作的文件系统,使它们非常轻量级和快速。Docker 使用 union 文件系统为容器提供构建块。Docker 可以使用多种 union 文件系统变体,包括:AUFS、btrfs、vfs 和 DeviceMapper。
容器格式
Docker 将这些组件组合成我们称之为容器格式的包装器。默认的容器格式称为 libcontainer。Docker 还支持使用 LXC 的传统 Linux 容器。将来,Docker 可能支持其他容器格式,例如,通过与 BSD 监狱或 Solaris 区域集成。
关于 Docker 的底层实现所依赖的关键技术是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。