在 OpenWrt 上玩 Docker,最忌讳的就是“一键安装”。默认情况下,Docker 会把所有的镜像和容器数据堆在系统的 /overlay 分区,如果你的系统盘较小,很快就会报错。
核心要点概括
- 先分区后安装:手动创建独立挂载点,防止 Docker 挤占系统空间。
- 关键前置操作:禁用系统自动挂载,确保磁盘路径受控。
- 文件系统选择:推荐使用 Btrfs 格式以获得更好的兼容性。
第一步:手动准备 Docker “专属领地”
在正式安装 Docker 插件之前,我们需要先在磁盘上开辟出一块空间。
- 安装磁盘管理工具:在“系统” -> “软件包”中,搜索并安装
luci-app-diskman。安装后刷新页面,在“状态”或“系统”菜单下找到“磁盘管理”。
- 创建新分区:
- 在剩余空间较大的磁盘上点击“修改”。
- 新建一个分区,大小根据需求设定(建议至少 10GB 以上,视频演示为 +10G)。
- 格式化(关键点):
- Btrfs (强烈推荐):如果你计划运行 AdGuard Home 等插件,Btrfs 可以避免镜像拉取时的兼容性报错。
- Ext4:普通用户也可以选择。
- 点击“格式化”并确认。
第二步:配置挂载点与关键细节
我们需要告诉系统,这块新空间是专门给 Docker 用的。请注意这里有一个非常关键的步骤。
- 禁用自动挂载:进入“系统” -> “挂载点”,向下滚动找到“全局设置”。⚠️ 重要细节:取消勾选“自动挂载未配置的磁盘分区”以及“自动挂载已配置的分区”。这一步是为了防止系统在启动时乱序挂载,确保我们的手动配置生效。点击“保存并应用”。
- 手动添加挂载点:
- 点击“添加”,在“设备”中选择你刚刚创建的那个分区(如
sdb3 或 sda3)。
- 挂载点设置:如果下拉菜单有“作为 Docker 根目录使用”的选项,直接选择;如果没有,请选择“自定义”,手动输入:
/opt/docker(这是大多数固件默认的 Docker 路径)。
- 点击“保存并应用”。此时,
/opt/docker 路径就已经拥有了你分配的十几 GB 空间。
第三步:安装 Docker 插件
- 环境检查:
- 确保网络环境正常(建议确保路由器具备流畅拉取海外软件包的能力,否则会失败)。
- 确保系统可用空间(Root)至少还有 300MB 以上,因为依赖包体积较大。
- 执行安装:在软件包中搜索
luci-app-dockerman,点击安装。它会自动下载 Docker 核心组件及界面程序。
- 忽略报错与耐心等待:安装过程中如果出现红色的日志报错,通常可以忽略。操作建议:安装完成后,不要立即点击菜单。静候 3-5 分钟,让后台程序彻底完成初始化,然后重启路由器。
第四步:Docker 的二次扩容与迁移
如果你发现现在的 Docker 空间不够用了,想换一块更大的硬盘,流程如下:
- 备份数据:将原 Docker 挂载目录(如
/opt/docker)下的文件通过 SSH 临时拷贝到其他存储介质。
- 新分区挂载:重复“第一步”和“第二步”,准备一块更大的新分区。
- 替换路径:在“挂载点”中将原路径指向新的分区。
- 还原数据:将备份的文件粘贴回新分区目录下,重启即可无损复活。
总结
通过手动禁用自动挂载并指定 /opt/docker 路径,你已经搭建了一个极具扩展性的 Docker 环境。这种方案最大的好处是:即便你日后重写了系统固件,只要数据盘不格式化,只需简单地重新挂载,你的所有容器和镜像都会毫发无损地找回来。