在Docker /Systemd 上rclone的挂载指南,以minio为例

以下是使用 Docker 和 systemd 两种方法挂载 Rclone 文件系统的详细指南,结合 MinIO 对象存储的配置示例:


一、通过 systemd 挂载 Rclone 文件系统

1. 创建 Rclone 配置文件

ini 复制代码
# /root/.config/rclone/rclone-minio.conf
[minio]
type = s3
provider = Minio
access_key_id = <Access Key>
secret_access_key = <Secret Key>
endpoint = http://<对象存储网址>:<对象存储端口>/

2. 创建 systemd 服务文件

bash 复制代码
sudo nano /etc/systemd/system/rclone-minio.service
ini 复制代码
[Unit]
Description=Mount minio using rclone
After=network-online.target docker.service

[Service]
Type=forking
ExecStartPre=/usr/bin/mkdir -pv /mnt/rclone/minio
ExecStart=/usr/bin/rclone mount minio: /mnt/rclone/minio \
  --config /root/.config/rclone/rclone-minio.conf \
  --header "Referer:" \
  --multi-thread-streams 4 \
  --buffer-size 512M \
  --vfs-fast-fingerprint \
  --vfs-cache-mode full \
  --no-modtime \
  --file-perms 0777 \
  --copy-links \
  --allow-other \
  --allow-non-empty \
  --umask 000 \
  --daemon \
  --cache-dir /root/rclone-cache

ExecStop=/bin/fusermount -u /mnt/rclone/minio
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

3. 启用并启动服务

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable rclone-minio
sudo systemctl start rclone-minio

二、通过 Docker 挂载 Rclone 文件系统

1. 使用 Docker Compose 配置

yaml 复制代码
version: "3.6"
services:
  mount-minio:
    entrypoint:
      - "sh"
      - "-c"
    image: mumiehub/rclone-mount
    container_name: "mount-minio"
    command: 
      - "/usr/local/sbin/rclone -v --config /config/rclone-minio.conf mount minio: /media/docker/volume/minio --allow-other --allow-non-empty --header Referer: --multi-thread-streams 4 --buffer-size 512M --vfs-fast-fingerprint --vfs-cache-mode full --no-modtime --file-perms 0777 --copy-links --dir-cache-time 48h --poll-interval 5m --umask 000"
    cap_add:
      - SYS_ADMIN
    devices:
      - "/dev/fuse:/dev/fuse"
    environment:
      - ConfigName=rclone-minio.conf
      - MountPoint=/media/docker/volume/minio
      - RemotePath=minio:
    hostname: "debian-msx-20k6a00dcd"
    ipc: "private"
    logging:
      driver: "json-file"
      options:
        max-file: "3"
        max-size: "10m"
    network_mode: "host"
    privileged: true
    restart: "always"
    security_opt:
      - apparmor:unconfined
      - label=disable
    stdin_open: true
    tty: true
    volumes:
      - /media/docker/volume/minio:/media/docker/volume/minio:rw,rshared
      - /root/.config/rclone:/config
    working_dir: "/"

2. 启动容器

bash 复制代码
docker-compose up -d

3. 验证挂载

bash 复制代码
# 查看挂载状态
df -h | grep minio

# 卸载命令(需谨慎使用)
sudo fusermount -u -z /media/docker/volume/minio

三、关键参数说明

  1. --vfs-cache-mode full:启用完整缓存模式,提升读写性能
  2. --allow-other:允许非 root 用户访问挂载目录
  3. --buffer-size 512M:设置 512MB 缓冲区优化大文件传输
  4. network_mode: host:Docker 容器直接使用宿主机网络

四、常见问题处理

  1. 权限问题 :确保容器有 SYS_ADMIN 能力和 /dev/fuse 设备访问权限
  2. 挂载失败:检查 Rclone 配置文件的 endpoint 和密钥是否正确
  3. 性能优化 :调整 --multi-thread-streams--buffer-size 参数

通过以上两种方法,可灵活选择 systemd 系统级挂载或 Docker 容器化方案实现 Rclone 文件系统的持久化挂载。

相关推荐
hjxu20163 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
Stewie121386 小时前
Docker 面试题
运维·docker·容器
vpk1126 小时前
Docker Compose 安装 Redis
redis·docker·容器
last demo8 小时前
Docker-compose和图形界面管理
docker·容器·eureka
好像不对劲10 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl
江畔何人初11 小时前
Docker、containerd、CRI、shim 之间的关系
运维·docker·云原生·容器·kubernetes
杨浦老苏11 小时前
在线视频播放器YT-DLP Web Player
docker·工具·群晖·下载·多媒体
ALex_zry11 小时前
Docker Compose 配置文件完全指南:从基础到生产级安全实践
服务器·安全·docker
万象.13 小时前
docker镜像仓库
运维·docker·容器
姚不倒13 小时前
Docker 核心原理与运维实战:从入门到生产级理解
运维·docker·架构