Skip to content

DockRoot:一个手搓版的 Docker

优势

  1. 用法跟 docker 相似,但是减少了功能以及简化了用法
  2. 不需要内核支持,支持更多 Linux 系统
  3. 没后台服务进程,更省内存
  4. 核心代码来源于 skopoe
  5. 借助工具:ruri 并能支持 Android

缺点

  1. 必须以超级权限运行,相当于 Docker 的 privilege
  2. 没任何网络隔离,相当于 Docker 的 host 模式

原理

  1. 下载 Docker 镜像
  2. 解压为 rootfs
  3. 生成 ruri 需要运行的配置文件
  4. ruri -c xxx/ruri.conf 运行镜像

下载

https://fw.koolcenter.com/binary/DockRoot/

运行方法

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

2. 手动把 DockRoot 下载到U盘,放入目录,比如:/tmp/mnt/sda1/DockRootBin/

X86平台:

  • DockRoot.amd64
  • ruri.amd64

ARM平台:

  • DockRoot.arm64
  • ruri.arm64

便于运行,建议:去掉后缀(.amd64、.arm64)放入目录:

  • /tmp/mnt/sda1/DockRootBin/DockRoot
  • /tmp/mnt/sda1/DockRootBin/ruri

3. 终端进入 DockRoot 存储目录:

cd /tmp/mnt/sda1/DockRootBin/

运行命令下载镜像并运行:

 安装:./DockRoot pull 容器镜像地址 容器名称
 运行:./DockRoot run -d 容器名称
 停用:./DockRoot stop 容器名称

4. 比如安装 alpine:

./DockRoot pull library/alpine:latest alpine

进入 alpine 终端:
./DockRoot run  alpine /bin/ash

进入 alpine 终端后,输入以下命令,查看 alpine 版本:
cat /etc/os-release

在  alpine 终端输入 exit 就退出 alpine,回到默认终端。

ps:其中:library/alpine:latest 为镜像地址;末尾 alpine 为容器名称;

  • 数据目录:存放 DockRootBin 文件夹的同级目录下自动生成 DockRootData 文件夹:

  • 存放目录:/tmp/mnt/sda1/DockRootBin/

  • 数据目录:/tmp/mnt/sda1/DockRootData/

  • 容器数据目录:/tmp/mnt/sda1/DockRootData/alpine

  • 容器运行日志:/tmp/mnt/sda1/DockRootData/alpine/ruri.log

  • 容器配置文件:/tmp/mnt/sda1/DockRootData/alpine/ruri.conf(里面指定了 Docker 的用户空间文件系统的存储目录)

 后台运行容器 alpine:
./DockRoot run -d alpine

查看是否运行:
./DockRoot ps alpine

停用容器 alpine:
./DockRoot stop alpine

删除/卸载镜像:(调用 rm 命令后,就可以安全删除不要的容器数据了!)
./DockRoot rm alpine

彻底删除容器数据:
rm -rf /tmp/mnt/sda1/DockRootData/alpine

其他容器

1、音乐服务器——Navidrome,端口:4533

./DockRoot pull deluan/navidrome:latest navidrome

挂载音乐存储路径:
./DockRoot run -v /tmp/mnt/sda2/music:/music:ro --renew navidrome
ps:/tmp/mnt/sda2/music 自己存储音乐的路径,根据实际情况填写!

./DockRoot run -d navidrome
./DockRoot stop navidrome

2、远程迅雷下载,端口:2345

./DockRoot pull cnk3x/xunlei:latest xunlei

挂载下载路径:
./DockRoot run -v /tmp/mnt/sda2/Downloads:/xunlei/downloads --renew xunlei
ps:/tmp/mnt/sda2/Downloads 自己下载存储路径,根据实际情况填写!

./DockRoot run -d xunlei
./DockRoot stop xunlei

3、智能家居——Homeassistant,端口:8123

./DockRoot pull homeassistant/home-assistant:latest homeassistant
./DockRoot run -d homeassistant
./DockRoot stop homeassistant

安装 HACS:

./DockRoot run  homeassistant bash

wget -O - https://get.hacs.xyz | bash -

exit

然后重启 homeassistant:

./DockRoot stop homeassistant
./DockRoot run -d homeassistant

4、浏览器面板——sun-panel,端口:3002

./DockRoot pull hslr/sun-panel:latest sunpanel
./DockRoot run -d sunpanel
./DockRoot stop sunpanel

默认登录用户:admin@sun.cc 密码:12345678

5、Nextcloud,端口:8082

./DockRoot pull library/nextcloud:latest nextcloud
./DockRoot run -d nextcloud
./DockRoot stop nextcloud

因为 nextcloud 默认用 80 端口,需要手动修改 rootfs /tmp/mnt/sda1/DockRootData/nextcloud/rootfs/etc/apache2/ports.conf 把 80 端口改成 8082,免得跟路由器的 80 端口冲突,然后重新启用容器!

6、Open-WebUI,端口:3000

./DockRoot pull linkease/open-webui:main openwebui
./DockRoot run -d openwebui
./DockRoot stop openwebui

7、网盘聚合——OpenList,端口:5244

./DockRoot pull openlistteam/openlist:latest-lite-aio openlist
./DockRoot run -d openlist
./DockRoot stop openlist

默认登录用户:admin 密码:默认随机密码,首次启动后看日志 /tmp/mnt/sda1/DockRootData/openlist/ruri.log

重置默认用户 admin 的密码为 password:

./DockRoot run openlist ./openlist admin set password

最后更新于: