0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述Docker的底层技术原理之Namespace

阿铭linux 来源:今日头条 作者:云技术趣谈 2021-07-21 09:55 次阅读

Docker的空间隔离使用的是namespace(空间),它是内核提供的一种空间隔离,在一个空间下,每个进程看到的视图是一致的,相应的如果不在一个空间下看到资源视图是不一致的,举个例子,如果两个进程在同一个网络命令空间下,那么他们看到的网络信息(网卡、IP、路由等)是一样的,可以通过localhost的方式互相访问。常用的有6种namespace,在Linux 内核4.6之后又添加了Cgroup这namespace,5.6 之后又添加了时钟namespace。

Namespace系统调用参数隔离内容

UTSCLONE_NEWUTS主机名与域名

IPCCLONE_NEWIPC信号量、消息队列和共享内存

PIDCLONE_NEWPID进程编号

NetworkCLONE_NEWNET网络设备、网络栈、端口等等

MountCLONE_NEWNS挂载点(文件系统)

UserCLONE_NEWUSER用户和用户组

CgroupCLONE_NEWCGROUPCgroup的根目录

TimeCLONE_NEWTIME时钟

这里有个小细节,上面表格创建Mount Namespace的系统调用参数是CLONE_NEWNS,而不是CLONE_NEWMOUNT。从字面理解是创建一个命名空间的意思,这是由于历史原因导致的,因为Mount Namespace是第一个namespace,内核的开发者可能也没有预料到后续还有其它的namespace的加入,所以就先把CLONE_NEWNS给占用了。

可见,namespace的隔离其实并不充分,除了上面的隔离能力,其他的都一样。譬如,时钟在内核5.6版本之前,所有容器和操作系统都共享同一个时钟,如果修改了操作系统的时间,所有容器都时间都会变化。

namespace实现原理也非常简单,每个进程(task_struct)都有一个关于namespace的属性nsproxy,表示自己所属的namespace。

struct task_struct { 。。.

/* namespaces */

struct nsproxy *nsproxy;

。。.

}

其中的nsproxy就是指向各种namespace的一个代理。

当新进程被创建后会继承其父进程的namespace,这就是为啥一个容器里面的所有进程都共享namespace。在Linux集群上面,通过读取“/proc/进程ID/ns/”下的文件可以获取到每个进程对应的namespace。

文章转载:https://os.51cto.com/art/202107/671347.htm

(版权归原作者所有,侵删)

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Docker
    +关注

    关注

    0

    文章

    455

    浏览量

    11819

原文标题:Docker内核技术原理之Namespace

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    三分钟学会Docker基本操作,快速入门容器技术

    机上一切正常”的回应,留下您满心的无奈与困惑? …… 那么,是时候学习并使用 Docker技术 了。通过快速掌握Docker,您将能够轻松实现在不同平台间上的无缝构建、测试与部署应用程序。Do
    的头像 发表于 11-11 17:22 109次阅读
    三分钟学会<b class='flag-5'>Docker</b>基本操作,快速入门容器<b class='flag-5'>技术</b>!

    Docker运行环境安装

    作者:京东科技 林中 Docker是一个开放的平台,用于开发、发布和运行应用程序。Docker分离了应用程序和运行应用的基础设施,从而实现了软件的快速交付。利用docker提供的一系列功能,包括构建
    的头像 发表于 10-29 11:28 167次阅读

    手动构建Docker镜像的方法

    不推荐使用docker commit命令,而应该使用更灵活、更强大的dockerfile来构建docker镜像。
    的头像 发表于 08-05 15:30 473次阅读
    手动构建<b class='flag-5'>Docker</b>镜像的方法

    ARM平台实现Docker容器技术

    或网络接口进行通信。 图1(2)Docker的作用更高效的利用系统资源:Docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机
    发表于 07-25 14:36

    ARM平台实现Docker容器技术

    或网络接口进行通信。图1(2)Docker的作用更高效的利用系统资源:Docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机
    发表于 07-17 11:05

    Jtti:Docker会替代调虚机吗

    Docker是计算虚拟化的一种方式,和使用虚拟机进行虚拟化是类似的。由于近几年Docker技术的流行和发展。所以单独介绍一下Docker。首先先回答下面一个问题。 1.
    的头像 发表于 07-12 14:38 283次阅读
    Jtti:<b class='flag-5'>Docker</b>会替代调虚机吗

    关于Docker 的清理命令集锦

    这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 复制代码代码如下: docker kill $(docker ps -a -q)  删除所有已经停止的容器 复制代码代码如下
    的头像 发表于 06-13 15:56 338次阅读

    一文扫尽Nas常用Docker软件

    NAS(Network Attached Storage,网络附加存储)设备上的Docker软件选择取决于您的具体需求和用途。以下是一些NAS上常用的Docker软件推荐
    的头像 发表于 05-23 18:33 1766次阅读

    鸿蒙OpenHarmony技术:【Docker编译环境】

    OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。
    的头像 发表于 05-11 09:47 1412次阅读
    鸿蒙OpenHarmony<b class='flag-5'>技术</b>:【<b class='flag-5'>Docker</b>编译环境】

    适合大学生的鸿蒙开发板-Purple Pi OH安装Docker

    介绍本文基于purple-pi-oh系列主板演示Linux系统安装Docker,方法适用于RK3566全系列产品。本教程将指导你在基于RK3566的LInux系统上安装DockerDocker是一
    的头像 发表于 05-10 08:32 556次阅读
    适合大学生的鸿蒙开发板-Purple Pi OH<b class='flag-5'>之</b>安装<b class='flag-5'>Docker</b>

    Docker容器技术的安装和使用

    通过Docker,开发人员可以更容易地构建、交付和运行应用程序,同时确保应用程序的一致性和可移植性。它也使得应用程序的部署更加灵活和高效,因为它可以快速地启动、停止和扩展容器,而不会影响其他容器或主机系统。
    发表于 04-16 11:24 294次阅读
    <b class='flag-5'>Docker</b>容器<b class='flag-5'>技术</b>的安装和使用

    精通Docker网络:Bridge驱动深度解析

    除了使用 docker0 网桥外,用户还可以使用自定义的网桥,然后通过 --bridge=BRIDGE 参数传递给 docker daemon。
    的头像 发表于 03-31 15:58 1393次阅读
    精通<b class='flag-5'>Docker</b>网络:Bridge驱动深度解析

    ARM平台实现Docker容器技术

    什么是Docker? (1)Docker的架构 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上
    的头像 发表于 03-07 13:48 770次阅读
    ARM平台实现<b class='flag-5'>Docker</b>容器<b class='flag-5'>技术</b>

    如何利用树莓派安装DockerDocker-compose呢?

    本文主要演示了树莓派如何安装DockerDocker-compose的过程。
    的头像 发表于 12-14 16:19 2790次阅读
    如何利用树莓派安装<b class='flag-5'>Docker</b>和<b class='flag-5'>Docker</b>-compose呢?

    docker和虚拟机有何区别?

    整个Docker由客户端、服务端和仓库构成
    的头像 发表于 12-06 10:08 637次阅读
    <b class='flag-5'>docker</b>和虚拟机有何区别?