外观
Compose 插件设置详解
服务 → Compose → 设置(Services → Compose → Settings)是 Compose 插件的总开关:compose 文件放哪、备份放哪、Docker 把数据存哪、日志留多少。大部分字段保持默认就行,真正要动的是四个共享文件夹和 Docker 存储位置。
字段名和默认值来自插件 8.2.3 的界面定义和源码,官方中文译名照实写,错字也照实写。
先看推荐配置
| 位置 | 推荐值 |
|---|---|
| Compose 文件 → 共享文件夹 | appdata |
| 数据 → 共享文件夹 | data |
| 备份 → 共享文件夹 | backup_compose,和 Docker 存储不是同一个 |
| Docker 配置 → 使用共享文件夹 | 勾选,选 docker,放在独立的盘上 |
| 日志最大容量 | 保持 50 MB |
| 实时恢复 | 保持关闭 |
| 启动延迟 | 0。重启后容器没起来,再往上加 |
| 覆盖 → URL 主机名 | 填 NAS 的 IP 或域名 |
| 创建符号链接 | 保持开启 |
改完点页面底部的 保存(Save),再点顶部黄色提示条上的 应用(Apply)。应用时,Docker 的存储、日志、实时恢复、启动延迟这几项会写进 Docker 的配置,必要时 Docker 会重启。
改 Docker 存储、重装或重启 Docker,会让所有容器停一下
- 影响范围:Docker 重启,所有容器短暂停止。改 Docker 存储 之后,Docker 用的是新目录,看不到旧目录里的镜像、容器和命名卷。旧数据不会被删,仍留在原目录。
- 前置条件:先在 OMV 的 shell 里以 root 身份运行
docker volume ls。列表里有命名卷,说明有数据存在 Docker 存储里(例如 Nextcloud AIO 的主容器配置),这样的数据不能当缓存丢掉。最稳妥的做法是在部署第一个应用之前,就把 Docker 存储设好。 - 怎么回退:把 Docker 存储 改回原来的路径,保存并应用,旧镜像和容器就回来了。
逐项说明
Compose 文件(Compose Files)
| 字段 | 默认值 | 说明 |
|---|---|---|
| 共享文件夹(Shared folder) | 空,必填 | compose 文件的根目录。插件在里面为每个应用建一个同名子目录,放 <名称>.yml 和 <名称>.env |
| 文件及文件夹的拥有者(Owner of directories and files) | root | 插件创建的目录和文件归谁 |
| 文件和文件夹所属组(Group of directories and files) | root | 同上,属组 |
| 文件及文件夹的权限(Permissions of directories and files) | 管理员 - 读/写,用户 - 无权限,其它 - 无权限(700) | 可选 700、750、770、755、775、777。文件本身的权限由它推算,对应 600、640、660、644、664、666,界面里没有单独的选项 |
这三项只管插件自己生成的目录和文件,不会改你的应用数据目录。compose 文件里常有密码,所以默认只有 root 能读,没有特殊需要别放宽。
数据(Data)
| 字段 | 默认值 | 说明 |
|---|---|---|
| 共享文件夹 | 空,可选 | 唯一的作用:把 compose 文件和 env 文件里的 CHANGE_TO_COMPOSE_DATA_PATH 换成这个共享文件夹的绝对路径 |
插件自带的示例文件都用这个变量。不设就用示例,保存文件时会提示「请设置共享文件夹用于数据存储」。变量和其他占位符的写法见写好 compose 文件。
备份(Backup)
| 字段 | 默认值 | 说明 |
|---|---|---|
| 共享文件夹 | 空 | 计划备份写到哪里。不能和 Docker 存储是同一个共享文件夹 |
| 最大尺寸(Max Size) | 1 | 单位 GB,超过这个大小的卷会被备份跳过。0 表示不限制 |
| 后端(Backend) | rsync | 可选 rsync 或 borg(8.1.3 起)。rsync 每次覆盖上一份;borg 去重,可以保留多份 |
| Borg 保留(Borg keep) | 7 | 保留最近几次备份。只有后端选 borg 才显示 |
| Borg 加密(Borg encryption) | 无 | 可选 无 或 源密钥(repokey)。改加密方式需要重新初始化仓库 |
| Borg 密钥(Borg passphrase) | 空 | 官方中文这样翻译,实际是 borg 的口令(passphrase)。丢了就无法恢复备份,另存一份 |
备份的完整流程、哪些卷会被备份,见更新与备份容器。
Docker 配置(Docker config)
| 字段 | 默认值 | 说明 |
|---|---|---|
| 使用 podman(Use podman) | 关 | 8.1 起实验性支持。打开后 Docker 相关项隐藏,改用 Podman。已经在跑 Docker 容器的系统不要随便切换 |
| 使用共享文件夹(Use shared folder) | 关 | 勾选后用下面的下拉框选共享文件夹 |
| 共享文件夹(Shared folder) | 空 | 选中后,保存时把它的绝对路径填进 Docker 存储。保存后这个下拉框会清空,路径留在 Docker 存储 里 |
| Docker 存储(Docker storage) | /var/lib/docker | Docker 保存镜像、容器层、命名卷的目录。留空表示你自己维护 /etc/docker/daemon.json,插件不碰它 |
| 日子文件最大容量(Log file max size) | 50 | 官方中文把「日志」错写成了「日子」。单位 MB,0 表示不限。写进 Docker 配置的 max-size,并固定保留 3 个文件 |
| 实时恢复(Live restore) | 关 | Docker 守护进程重启时,容器继续运行 |
| Podman 存储(Podman storage) | /var/lib/containers/storage | 只在勾选 podman 后出现 |
要点:
- Docker 存储不要放在系统盘、U 盘或 SD 卡上,不要放进 mergerfs 池,不要用符号链接,文件系统优先 EXT4,不要用 NTFS。理由见为什么在 NAS 上用容器。
- 使用 NVIDIA 显卡的容器时,Docker 存储留空。wiki 的说明是,在这种情况下改存储路径可能破坏 NVIDIA 的配置。留空后需要自己写
/etc/docker/daemon.json。 - 日志最大容量很重要:Docker 默认的
json-file日志驱动不做日志轮转,日志会一直涨。这一项只对之后新建的容器生效,已有的容器需要「下线」再「上线」重建才会用上新的上限。 - 实时恢复保持关闭。8.0.6 起插件把它的默认值改成关,因为开启后,使用 s6 的容器会出问题,而 LinuxServer 系的镜像大多用 s6。
- 勾选存储后,插件会写入
/etc/docker/daemon.json:data-root、storage-driver: overlay2,以及日志和实时恢复选项。你不用手动改这个文件。 - Docker 29.0 起,全新安装默认使用 containerd 镜像存储,它的数据在
/var/lib/containerd,不受data-root控制(Docker 官方文档)。插件写入的配置明确指定了overlay2,所以镜像应当仍在你设置的目录里;Docker 存储留空时就没有这层保证。想确认的话,看docker info里的Storage Driver和Docker Root Dir。
启动延迟(Start delay)
| 字段 | 默认值 | 说明 |
|---|---|---|
| 启动延迟 | 0 | 单位秒,0–300。开机后,等待这么久再启动 Docker |
无论是否设置延迟,插件都会给 Docker 加一个 systemd 配置,让它等 /srv 下的文件系统挂载完成再启动。只有在重启后容器没起来、日志显示存储还没准备好时,才需要加延迟,排查见重启后容器没起来。
Docker 信息(Docker info)
只读:状态(Status)、Docker 版本(Docker version)、Compose 版本(Compose version)。状态为「未安装」表示 Docker 还没装上,见安装 Docker 与 Compose 插件。
覆盖(Overrides)
| 字段 | 默认值 | 说明 |
|---|---|---|
| URL 主机名(URL hostname) | 空 | 在 文件、服务、Containers 页点端口链接时,替换链接里的主机名。默认用 OMV 的主机名,电脑解析不了时链接就打不开,这时填 NAS 的 IP |
| 显示命令(Show commands) | 关 | 任务对话框里显示实际执行的 docker 命令,学习和排错时有用 |
| 运行配置(Run config) | 关 | 保存 compose 文件时自动检查语法(执行 docker compose config) |
| 创建符号链接(Create symlinks) | 开 | 在每个应用目录里建 .env 和 compose.yml 两个符号链接。有些官方 compose 文件写了 env_file: .env,没有这个链接就读不到,所以别关 |
标签页缓存时间(Cache times for tabs)
文件、服务、统计、镜像、网络、卷、Containers 七个页面各有一个缓存时间,默认都是 60 秒,0 表示不缓存。容器多的时候,调大能让页面更流畅,代价是数据更旧。
底部按钮
| 按钮 | 作用 |
|---|---|
| 启用 Docker 源(Enable Docker repo) | 在 omv-extras 里启用 Docker 软件源,等于不用跑去 系统 → omv-extras |
| 重新安装 Docker(Reinstall Docker) | 卸载 Docker 软件包后重新部署,有确认框。期间所有容器停止,数据目录不会被删除 |
| 重启 Docker(Restart Docker) | 重启 Docker 服务,有确认框。所有容器会短暂停止 |
| 清除缓存(Clear cache) | 清掉各标签页的缓存,列表显示不对时用 |
保存时的校验
保存设置时,插件会检查你选的共享文件夹:
- Compose 文件、数据、Docker 三者两两不同;备份和 Docker 也不同。否则提示类似「Compose 文件存储的共享文件夹必须与 data 存储共享文件夹不同」。
- 所在文件系统能写、支持 Linux 权限、符号链接、硬链接、命名管道和文件锁。不满足就拒绝保存,错误里会写出文件系统类型。
检查结果
- 保存并应用后,设置页底部 Docker 信息 里状态正常。
- 在 OMV 的 shell 里以 root 身份运行
docker info | grep -E "Docker Root Dir|Storage Driver",目录是你设置的路径。 - 在
服务 → Compose → 文件里点任意一个应用的端口链接,主机名能被你的电脑解析(不能就回去填 URL 主机名)。
常见问题
改了日志上限,旧容器的日志还是在涨。 这一项只对新建的容器生效。选中对应的 compose 文件,先 下线(down)再 上线(up),容器重建后才会用新的上限。
应用设置后 Docker 重启了,容器也停了。 改动 Docker 存储、日志、实时恢复、启动延迟时会触发这个行为。带 restart: unless-stopped 的容器会在 Docker 起来后自动启动,其他的需要手动上线。
我想自己写 /etc/docker/daemon.json。 把 Docker 存储 留空,插件就不会改这个文件。写法以 Docker 官方文档为准,改完用 systemctl restart docker 重启(OMV 的 shell,root)。