美文网首页
Docker是如何实现隔离的

Docker是如何实现隔离的

作者: ljt001 | 来源:发表于2021-08-03 16:31 被阅读0次

Docker是如何实现隔离的

转发 https://my.oschina.net/luozhou/blog/3160479

1、进程隔离
在容器内部都只能看到自己内部的进程,那 Docker 是如何做到的呢?它其实是借助了Linux内核的Namespace技术来实现的
CLONE_NEWPID会让执行的程序内部重新编号PID,也就是从1号进程开始
CLONE_NEWNS 会克隆新的挂载环境出来,通过在子进程内部重新挂载 proc文件夹,可以屏蔽父进程的进程信息。
在容器内部都只能看到自己内部的进程
这就是容器隔离进程的基本原理了,Docker主要就是借助 Linux 内核技术Namespace来做到隔离的,其实包括文件的隔离,资源的隔离都是在新的命名空间下通过mount挂载的方式来隔离的。

Docker 技术 完全是依赖 Linux 内核特性 Namespace 和Cgroup 技术来实现的,本质来说:你运行在容器的应用在宿主机来说还是一个普通的进程,还是直接由宿主机来调度的,相对来说,性能的损耗 就很少,这也是 Docker 技术的重要优势。

Docker容器是共用宿主机操作系统的,docker image里没有内核,只有shell。
/proc/[pid]/ns 目录下包含进程所属的 namespace 信息,使用以下命令可查看当前进程所属的 namespace 信息:
$ ll /proc/$$/ns

相关文章

网友评论

      本文标题:Docker是如何实现隔离的

      本文链接:https://www.haomeiwen.com/subject/lfbfvltx.html