docker中chroot是做什么的

相关案例演示

在docker中,chroot是在Unix和Linux系统的一个操作,针对正在运行的软件进程和它的子进程,改变它外显的根目录,可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录。

本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。

docker中chroot是做什么的

chroot

容器技术从1979年chroot的首次问世便已崭露头角。

维基百科对chroot的定义如下:

是在 Unix 和 Linux 系统的一个操作,针对正在运行的软件进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由 chroot 设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容。

通俗地说 ,chroot 就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录,这个跟我们在一个容器中是很相似的。下面我们通过一个实例来演示下 chroot。

chroot实例说明:

1)、mkdir rootfs

#在当前目录下创建一个名称为:rootfs 的目录

2)、cd rootfs

#进入目录名称为:rootfs 目录下

3)、docker export $(docker create docker101tutorial) -o docker101tutorial.tar

#将容器名为:docker101tutorial的文件系统作为一个docker101tutorial.tar归档文件导出到docker101tutorial.tar中并保存

#也可以简单理解为在rootfs下创建了一些目录和放置了一些二进制文件

4)、tar -xf docker101tutorial.tar

#解压docker101tutorial.tar文件内容

5)、ls

#查看当前 rootfs 目录下的文件内容

6)、chroot /Users/xiaoqin.wu/rootfs /bin/sh

#启动一个sh 进程,并且把 /Users/xiaoqin.wu/rootfs 作为sh 进程的根目录

16.png

17.png

对比上图中命令5:ls查看/Users/xiaoqin.wu/rootfs目录下文件内容的结果与在sh进程中使用命令7:ls查看当前进程的结果是一致,至此,说明使用chroot实现了当前进程与主机的隔离,一个目录隔离的容器就完成了,但是还不能称之为一个容器。

原因如下:

使用命令8:netstat -nr查看路由信息

18.png

由结果发现,网络信息并未隔离,实际上进程等信息此时也并未隔离,要想实现一个完整的容器,需要Linux的其他三项技术来实现,分别是:

Namespace

Cgroup

联合文件系统

推荐学习:《docker视频教程》

以上就是docker中chroot是做什么的的详细内容,更多请关注php中文网其它相关文章!

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。


来源:网友投稿 关注: 时间:2022-02-08 08:15
首先声明,只要是我们的vip会员所有源码均可以免费下载,不做任何限制(了解更多)
☉本站的源码不会像其它下载站一样植入大量的广告。为了更好的用户体验以后坚持不打水印
☉本站只提供精品织梦源码,源码在于可用,不在多!!希望在这里找到你合适的。
☉本站提供的整站织梦程序,均带数据及演示地址。可以在任一源码详情页查看演示地址
☉本站所有资源(包括源码、模板、素材、特效等)仅供学习与参考,请勿用于商业用途。
☉如有其他问题,请加网站客服QQ进行交流。
相关织梦教程
QQ在线咨询