手搓一个Docker 以支持更多平台更省内存!

2025-06-18 13:47:28 4点赞 15收藏 1评论
手搓一个Docker 以支持更多平台更省内存!

花了一天多的时间实现的手搓版的Docker,它来了!!!

我们把它这么命名叫DockRoot!

那么这个手搓版的Docker有什么好处呢?

为什么要开发这个手搓版的Docker?

为什么不用原生的Docker呢?

1、首先我们这个DockRoot,对内核没有任何的依赖;所以它就可以支持华硕路由器,因为华硕本身的无线驱动是官方编译好,不开源的一些东西,你没办法去支持Docker;

2、DockRoot更省内存,因为它本身不需要Docker Daemon。

简单过一下 Docker原理:

手搓一个Docker 以支持更多平台更省内存!

Linux内核支持多个文件用户系统,支持多个用户空间来调用,然后内核去管理硬件

并且用户空间的文件系统是独立的,相互隔离,不会互相干扰,但是又是共用同一个内核。

手搓一个Docker 以支持更多平台更省内存!

所以Docker就是一个轻量版的用户空间隔离,而不同于虚拟机的模拟出多个硬件,没有虚拟机隔离的那么彻底;Docker只是隔离了用户空间,没有隔离内核,对于性能来说,Docker比虚拟机更好,程序运行没太多的性能损耗;Docker对内核依赖程序更高。

手搓一个Docker 以支持更多平台更省内存!

那没有内核的支持,手搓版的DockRoot有什么缺陷?

手搓一个Docker 以支持更多平台更省内存!

总结下来,就是2个点:

  1. 必须以超级权限运行,相当于 Docker 的 privilege

  2. 没任何网络隔离,相当于 Docker 的 host 模式

DockRoot原理:

  1. 下载 Docker 镜像

  2. 解压为 rootfs

  3. 生成 ruri 需要运行的配置文件

  4. ruri -c xxx/ruri.conf 运行镜像

那么怎么在设备上运行呢?

  1. 必须准备一个高速的U盘或者硬盘,格式化为 Ext4

  2. 手动把 DockRoot 文件下载到硬盘上

  3. 下载镜像:

    ./DockRoot.arm pull homeassistant/home-assistant:latest ha002

    ./DockRoot.arm run ha002

手搓一个Docker 以支持更多平台更省内存!

这就是把智能家居 Homeassistant 的镜像,下载到本地成为ha002(可以理解为Docker的名字),然后运行的一个过程;

手搓一个Docker 以支持更多平台更省内存!手搓一个Docker 以支持更多平台更省内存!

下载镜像,然后自动解压,这里的 ha002/rootfs 就是用户空间,

手搓一个Docker 以支持更多平台更省内存!

我们得到了 Homeassistant 的用户空间,然后通过 chroot 去运行,实际就是跟 Docker 运行 Homeassistant 一样的效果;

DockRoot 本质来说就是一个 Docker,只是缺少网络隔离和用户隔离。

Homeassistant 已经运行了,我们看看能不能进入 Homeassistant 管理页面;

手搓一个Docker 以支持更多平台更省内存!

演示操作是在华硕路由器——GS7魔盒上操作的,192.168.9.156就是魔盒的IP,接下来,通过 Homeassistant 的默认端口 8123 进入试试;

手搓一个Docker 以支持更多平台更省内存!

运行 Homeassistant 成功,是可以进入 Homeassistant 的。

然后通过 SSH 命令查看,Homeassistant 占用CPU也很低,后台也没任何 Docker 在运行;

手搓一个Docker 以支持更多平台更省内存!

这样 DockRoot 省了很多内存,很轻量化!!!

如果想探索更多华硕路由器的玩法,请持续关注我们「iStoreOS」公众号,和「酷友社」的B站号。

展开 收起
1评论

  • 精彩
  • 最新
  • [皱眉] 还以为牛逼地代码搓了个docker。。。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
15
扫一下,分享更方便,购买更轻松