这篇文章将为大家详细讲解有关Docker的底层实现所依赖的关键技术是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
底层技术
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的底层实现所依赖的关键技术是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。