You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下Docker local-persist插件作为systemd服务使用遇问题

问题

我正为包含数十个服务(约35个卷)的大型应用创建持久化Docker卷,在Docker官网的「Use Docker Engine Plugins page」发现了local-persist插件。我按照作者README中的说明将其安装为systemd服务,执行命令:

curl -fsSL https://raw.githubusercontent.com/CWSpear/local-persist/master/scripts/install.sh | sudo bash

每个节点上的服务已安装并正常运行:

$ systemctl | grep pers
  docker-volume-local-persist.service       loaded active running   docker-volume-local-persist
$

但当我在docker-compose文件中按照作者示例使用该插件时:

volumes:
  cache-perstnt-1-data:
    driver: local-persist
    driver_opts:
      mountpoint: /data/cache-perstnt-1-data

Docker却无法找到该插件。请问还需进行什么操作才能让Docker识别作为systemd服务运行的该插件?

解决方案
  • 确认插件套接字路径配置
    Docker默认扫描/run/docker/plugins目录识别插件。先检查该目录下是否存在local-persist.sock文件:

    ls -l /run/docker/plugins/
    

    如果没有这个文件,打开systemd服务配置文件(一般在/etc/systemd/system/docker-volume-local-persist.service),在[Service]段修改或添加启动参数,指定套接字路径:

    ExecStart=/usr/bin/docker-volume-local-persist -socket /run/docker/plugins/local-persist.sock
    

    重新加载systemd并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart docker-volume-local-persist.service
    
  • 手动注册插件到Docker
    若套接字存在但Docker未识别,在/etc/docker/plugins/目录下创建local-persist.json配置文件,内容如下:

    {
      "Name": "local-persist",
      "Addr": "unix:///run/docker/plugins/local-persist.sock"
    }
    

    保存后重启Docker服务:

    sudo systemctl restart docker.service
    
  • 验证插件状态
    执行以下命令查看Docker已加载的卷插件:

    docker plugin ls
    

    若输出中出现local-persist,说明配置生效,此时再运行docker-compose即可正常使用该卷驱动。

  • 排查权限与安全策略问题
    检查套接字文件权限,确保Docker进程所属的docker用户组有读写权限:

    sudo chown root:docker /run/docker/plugins/local-persist.sock
    sudo chmod 660 /run/docker/plugins/local-persist.sock
    

    若系统启用了SELinux或AppArmor,需调整对应策略允许Docker访问该套接字,或临时关闭测试(生产环境不推荐)。

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:05:18