
wiserain/rclonedocker-rclone是一个用于rclone挂载的Docker镜像,基于Ubuntu 24.04系统构建。该镜像提供远程存储挂载功能,支持mergerfs或unionfs文件系统池化,并包含实用脚本,方便用户将远程存储与本地目录合并管理,适用于文件同步、媒体存储等场景。
copy_local和move_local脚本,方便本地与远程目录间的文件同步yamlversion: '3' services: rclone: container_name: rclone image: wiserain/rclone # 或 ghcr.io/wiserain/rclone restart: always network_mode: "bridge" volumes: - ${DOCKER_ROOT}/rclone/config:/config # rclone配置文件目录 - ${DOCKER_ROOT}/rclone/log:/log # 日志目录 - ${DOCKER_ROOT}/rclone/cache:/cache # 缓存目录 - /your/mounting/point:/data:shared # 挂载点(本地路径) - /local/dir/to/be/merged/with:/local # 可选:需与远程存储合并的本地目录 devices: - /dev/fuse # 必要设备 cap_add: - SYS_ADMIN # 必要权限 security_opt: - apparmor:unconfined # 安全选项 environment: - PUID=${PUID} # 用户ID - PGID=${PGID} # 用户组ID - TZ=Asia/Seoul # 时区 - RCLONE_REMOTE_PATH=remote_name:path/to/mount # rclone远程路径(需在配置文件中定义)
等效的Docker命令:
bashdocker run -d \ --name=rclone \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --security-opt apparmor=unconfined \ -v ${DOCKER_ROOT}/rclone/config:/config \ -v ${DOCKER_ROOT}/rclone/log:/log \ -v ${DOCKER_ROOT}/rclone/cache:/cache \ -v /your/mounting/point:/data:shared \ -v /local/dir/to/be/merged/with:/local \ -e PUID=${PUID} \ -e PGID=${PGID} \ -e TZ=Asia/Seoul \ -e RCLONE_REMOTE_PATH=remote_name:path/to/mount \ wiserain/rclone
使用前需准备rclone配置文件,可通过内置脚本生成:
bashdocker-compose exec <service_name> rclone_setup
配置文件需位于/config/rclone.conf。容器启动时会检查配置文件及RCLONE_REMOTE_PATH的有效性,日志可通过以下命令查看:
bashdocker logs <container name or sha1, e.g. rclone>
容器内部执行的rclone挂载命令如下:
bashrclone mount ${RCLONE_REMOTE_PATH} ${rclone_mountpoint} \ --uid=${PUID:-911} \ --gid=${PGID:-911} \ --cache-dir=/cache \ --use-mmap \ --allow-other \ --umask=002 \ --rc \ --rc-no-auth \ --rc-addr=:5574 \ ${RCLONE_MOUNT_USER_OPTS}
| 环境变量 | 描述 | 默认值 |
|---|---|---|
PUID / PGID | 运行应用的用户ID和组ID | 911 / 911 |
TZ | 时区(日志时间戳需此配置) | |
RCLONE_REMOTE_PATH | rclone远程路径(需在配置文件中定义) | |
RCLONE_CONFIG | rclone配置文件路径 | /config/rclone.conf |
RCLONE_LOG_LEVEL | rclone运行日志级别 | NOTICE |
RCLONE_LOG_FILE | 日志输出文件路径(可选) | |
RCLONE_MOUNT_USER_OPTS | 附加到rclone mount命令的额外参数 |
通过RCLONE_SERVE_MODE环境变量可启用rclone serve功能,将挂载的文件系统通过指定协议共享。
bashrclone serve ${RCLONE_SERVE_MODE} ${rclone_mountpoint} \ ${RCLONE_SERVE_ARGS:---use-mmap --addr=:5678}
| 环境变量 | 描述 | 默认值 |
|---|---|---|
RCLONE_SERVE_MODE | 服务模式,可选:dlna/docker/ftp/http/restic/sftp/webdav | |
RCLONE_SERVE_ARGS | rclone serve命令的附加参数 | --use-mmap --addr=:5678 |
通过POOLING_FS环境变量选择文件系统池化方式,可将远程存储与本地目录合并为单一访问点。
设置POOLING_FS=mergerfs启用mergerfs,内部执行命令:
bashmergerfs \ -o uid=${PUID:-911},gid=${PGID:-911},umask=022,allow_other \ -o ${MFS_USER_OPTS} \ /local=RW:/cloud=NC /data
默认MFS_USER_OPTS参数:
bashMFS_USER_OPTS="rw,use_ino,func.getattr=newest,category.action=all,category.create=ff,cache.files=auto-full,dropcacheonclose=true"
设置POOLING_FS=unionfs启用unionfs,内部执行命令:
bashunionfs \ -o uid=${PUID:-911},gid=${PGID:-911},umask=022,allow_other \ -o ${UFS_USER_OPTS} \ /local=RW:/cloud=RO /data
默认UFS_USER_OPTS参数:
bashUFS_USER_OPTS="cow,direct_io,nonempty,auto_cache,sync_read"
提供copy_local和move_local脚本,用于本地与远程目录间的文件同步(需挂载/local目录)。
将/local目录文件复制到/cloud(远程存储):
bashdocker exec -it <container name or sha1, e.g. rclone> copy_local
排除机制:在需排除的文件夹根目录创建空文件.nocopy,脚本将跳过该目录。
将/local目录文件移动到/cloud,包含三个阶段:
MOVE_LOCAL_AFTER_DAYS天的文件MOVE_LOCAL_EXCEEDS_GB大小的文件(释放MOVE_LOCAL_FREEUP_GB空间)MOVE_LOCAL_ALL=true,移动剩余文件移动完成后自动清理空目录(KEEP_EMPTY_DIRS=1可保留空目录):
bashdocker exec -it <container name or sha1, e.g. rclone> move_local
排除机制:在需排除的文件夹根目录创建空文件.nomove,脚本将跳过该目录。
通过环境变量配置脚本定时执行:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
COPY_LOCAL_CRON | copy_local的cron调度表达式 | |
MOVE_LOCAL_CRON | move_local的cron调度表达式 |


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务