在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 文件系统的持久化挂载。

相关推荐
杨浦老苏3 小时前
Docker应用端口查看器docker-port-viewer
运维·docker·群晖
小诸葛的博客4 小时前
MariaDB MaxScale 的用途与实现细节
云原生·容器·kubernetes
筑梦之路4 小时前
如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
运维·docker·容器
逢生博客5 小时前
将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
人工智能·spring boot·docker·deepseek·cherry studio·mcp 服务端·mcp 客户端
xuhe26 小时前
使用xxxbase应付CRUD后端任务
linux·docker·crud·backend
小诸葛的博客6 小时前
Docker Overlay 网络的核心工作(以跨节点容器通信为例)
网络·docker·容器
Ares-Wang7 小时前
kubernetes》》k8s》》Service
java·容器·kubernetes
欢喜躲在眉梢里7 小时前
容器docker入门学习
运维·学习·nginx·docker·容器·虚拟化
曼岛_7 小时前
企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置)
容器·kubernetes·负载均衡
老友@9 小时前
Docker 安装 Elasticsearch 8.x
elasticsearch·docker·容器