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

相关推荐
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 5.日志审计
linux·运维·docker·云原生·容器·kubernetes·cka
David爱编程2 小时前
Docker 存储卷详解:数据持久化的正确打开方式
后端·docker·容器
藥瓿锻3 小时前
2024 CKA题库+详尽解析| 15、备份还原Etcd
linux·运维·数据库·docker·容器·kubernetes·cka
zyjyyds1135 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr5 小时前
Docker基础(一)
运维·docker·容器·eureka
搬运Gong5 小时前
Dockerfile使用与最佳实践
docker·容器·虚悬镜像
小兔子酱#5 小时前
【Docker 01】Docker 简介
运维·docker·容器
阿福不是狗11 小时前
Python使用总结之Mac安装docker并配置wechaty
python·macos·docker
叶落闲庭14 小时前
【k8s】k8s集群搭建
云原生·容器·kubernetes
藥瓿亭14 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks