Skip to content

Latest commit

 

History

History
34 lines (20 loc) · 1.47 KB

README.md

File metadata and controls

34 lines (20 loc) · 1.47 KB

使用c++实现的简单docker

最近没有什么需要做的事,一直在读论文,但是读论文总是感觉心里发虚,想要写点什么。

最近突发奇想,docker既然这么好用,而且和我的兴趣操作系统很相关,要不自己写个docker试试。不知道最终能写到什么样子,只是希望能有点事打发一下时间。

docker是用Go写的,但是可能我心中有一些执念,我一直觉得底层的东西就应该用C++写,当然上层的命令啥得无所谓,但是运行时应该用C++,因此我觉得先用C++进行尝试。

编译方法

首先需要把sheep-tools放到和docker-cpp相同的文件夹。然后用cmake .生成Makefile,再用make编译。

运行参数

注:

  1. max表示相关资源无限制,但是实际参数不可以是max。
参数 说明 是否必填 默认值
-m 容器挂载的根目录
-c 运行的命令
--cpu_percent 最大CPU时间百分比 100
--mem_high 最大内存占用量(字节),超出之后将受到限制 max
--mem_max 最大内存占用量(字节),一旦超出立即被kill max

参数名与值之间使用空格分开,不要写等于号。例如sudo ./docker-cpp -m asd -c asr --cpu_percent 70

注意运行需要root权限

参考资料

Linux 容器底层工作机制:从 500 行 C 代码到生产级容器运行时(2023)