摘要:我们知道在容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢其实一点也不神奇利用了系统的内部命令。
我们知道在Docker容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢?
其实一点也不神奇——利用了Linux系统的内部命令chroot。
chroot能将进程的根目录设置成任意指定的目录。
使用chroot我们能创建一个新的进程,并且以chroot执行时传入的参数作为新进程的根目录。
因为新进程创建之后就无法访问除了新进程创建时传入chroot参数之外的其他文件目录,为了确保这个新进程能够正常工作,我们必须手动拷贝一些文件到新进程的根目录映射的旧目录下。
做一个如下测试:
新建一个文件夹,执行chroot . 意思是把文件夹$HOME/container当作新建进程的根目录。但是没有成功,报错误消息chroot: failed to run command ‘/bin/bash’: No such file or directory
执行下面两条命令:
执行命令ldd $HOME/container/bin/bash:
该命令为了查看需要有哪些库文件得手动拷贝到文件夹$/HOME/container/bin/bash下面:
根据ldd的输出,再次执行下图的八条命令:
再次执行chroot . , 发现这次成功了:
pwd发现是在根目录下,ls也只能发现执行chroot时指定的container目录下的子目录:
这就是docker文件目录隔离的实现原理。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27562.html
摘要:我们知道在容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢其实一点也不神奇利用了系统的内部命令。 我们知道在Docker容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢? 其实一点也不神奇——利用了Linux系统的内部命令chroot。 chroot能将进程的根目录设置成任意指定的目录。 showImg(https://segmentfault....
摘要:执行容器内部运行的执行工作作为容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制,负责容器内部进程的真正运行等。典型的在启动后,首先将设置为进行一系列检查然后将其切换为供用户使用。 在https://segmentfault.com/a/11... 容器,隔离,云的概述。这篇对其中用途广泛的docker,k8s做详细介绍,并给出云搭建的生态环境体系。 docker ...
摘要:执行容器内部运行的执行工作作为容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制,负责容器内部进程的真正运行等。典型的在启动后,首先将设置为进行一系列检查然后将其切换为供用户使用。 在https://segmentfault.com/a/11... 容器,隔离,云的概述。这篇对其中用途广泛的docker,k8s做详细介绍,并给出云搭建的生态环境体系。 docker ...
摘要:所以,我们希望对进程进行资源利用上的限制或控制。它主要提供了如下功能限制资源使用,比如内存使用上限以及文件系统的缓存限制。的作用资源限制可以对任务使用的资源内存,,磁盘等资源总额进行限制。通过实现了资源隔离,通过实现了资源限制。 作者:烧鸡太子爷来源:恒生LIGHT云社区背景最近在给组内新人讲解一些docker...
摘要:而实际上在宿主机中也会同步启动一个进程,其在宿主机中是。如果其中的某一个容器正在执行密集型的任务,那么它就会影响其他容器的任务执行效率,导致多个容器相互影响并且抢占资源。 作者:荣幸 为什么是容器 如果问你现在最热门的服务器端技术什么?想必很多人会不假思索的说是容器! 容器技术实际上并不是一个新鲜的名词,现在大家一提到容器马上想到的就是Docker,但是容器这个词并不是Docker公司...
阅读 1688·2023-04-26 02:30
阅读 1016·2021-11-10 11:36
阅读 1361·2021-10-08 10:14
阅读 3475·2021-09-28 09:35
阅读 1518·2021-08-23 09:47
阅读 2520·2019-08-30 15:56
阅读 1445·2019-08-30 15:44
阅读 1709·2019-08-30 13:59