构造实现简单容器

现在即将开始真正踏上构造自己的容器的道路。我们会基于当前的操作系统创建一个与宿主机隔离的容器环境,下面就开始吧。在开始之前我们需要先对 Linux 的 proc 文件系统做一个介绍:

如果你对这些基本知识已经很熟悉了,请直接略过。Linux 下的 /proc 文件系统是由内核提供的,它其实不是一个真正的文件系统,只包含了系统运行时的信息(比如系统内存、mount 设备信息、一些硬件配置等),它只存在于内存中,而不占用外存空间。它以文件系统的形式,为访问内核数据的操作提供接口。实际上,很多系统工具都是简单地去读取这个文件系统的某个文件内容,比如 lsmod,其实就是 cat /proc/modules。当遍历这个目录的时候,会发现很多数字,这些都是为每个进程创建的空间,数字就是它们的 PID。

mark

下面介绍几个比较重要的部分:

mark

实现一个简单版本的 run 命令,类似 docker run -ti [command] 代码目录结构如下: