Appearance
DockRoot:一个手搓版的 Docker
优势
- 用法跟 docker 相似,但是减少了功能以及简化了用法
- 不需要内核支持,支持更多 Linux 系统
- 没后台服务进程,更省内存
- 核心代码来源于 skopoe
- 借助工具:ruri 并能支持 Android
缺点
- 必须以超级权限运行,相当于 Docker 的 privilege
- 没任何网络隔离,相当于 Docker 的 host 模式
原理
- 下载 Docker 镜像
- 解压为 rootfs
- 生成 ruri 需要运行的配置文件
- 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