首页
/ rclone Docker Volume Plugin 完全指南:将云存储挂载为 Docker 命名卷

rclone Docker Volume Plugin 完全指南:将云存储挂载为 Docker 命名卷

2026-09-07 17:04:30作者:管翌锬

rclone 以 "rsync for cloud storage" 著称,而其 serve docker 子命令则实现了一套完整的 Docker Volume Plugin API,让 Docker 守护进程可以把 70+ 后端(SFTP、Google Drive、S3、Storj 等)当作命名卷(named volume)直接挂载进容器。本文面向希望在自己的 Docker 单机、Compose 或 Swarm 集群中复用这套能力的开发者,围绕 Docker Volume Plugin 官方文档 展开,并结合仓库中的 serve docker 命令源码,讲解从插件安装、卷创建、配置语法到 systemd 自托管与故障排查的完整链路。

Docker 命名卷与 Volume Plugin 背景

Docker 1.9 起支持通过命令行创建 命名卷(named volumes) 并挂载进容器,用于容器间数据共享;1.10 起可在 docker-compose.yml 中声明卷;1.12 起 Docker Engine 内置的 Swarm 模式也支持通过 compose v3 描述跨多节点的 swarm stack 卷。

Docker 原生的 local 卷驱动把数据保存在宿主机磁盘上,而 Docker Volume Plugin 机制允许用第三方驱动提供带状态的卷,跨容器、跨主机共享数据。与 local 卷最大的区别是:删除卷时数据不会随之丢失。插件可以:

  • 由 docker daemon 托管运行(managed plugin);
  • 作为原生系统服务运行(systemd、sysv、upstart);
  • 作为独立可执行程序直接运行。

rclone 在这三种模式下都能充当 Docker volume plugin:它通过 plugin API 与本机 docker daemon 交互,负责把远程文件系统挂载进容器,因此必须与 docker daemon 运行在同一台宿主机上,或在每一个 Swarm 节点上运行。该功能对应仓库中的 cmd/serve/docker 包,入口文件 docker.go 中定义命令并注册到 serve 组,versionIntroduced 标记为 v1.56。

快速上手:单机挂载 SFTP 卷

文档以最简场景开始:在单台 Ubuntu 机器上用 Docker Engine 挂载 SFTP remote。

  1. 先在宿主机安装 Docker。
  2. rclone 挂载依赖 FUSE 驱动,需要安装在宿主机上:
sudo apt-get -y install fuse3
  1. 创建 rclone docker 插件所需的两个目录:
sudo mkdir -p /var/lib/docker-plugins/rclone/config
sudo mkdir -p /var/lib/docker-plugins/rclone/cache

插件不会自动创建这两个目录,若缺失将导致插件无法启动。config 目录即便为空也必须存在。

  1. 为你的 CPU 架构安装受管插件(此处以 amd64 为例):
docker plugin install rclone/docker-volume-rclone:amd64 args="-v" --alias rclone --grant-all-permissions
docker plugin list

--alias rclone 把插件缩写为 rclone,后续卷创建命令中的 -d rclone 即指向它。args="-v" 是规避 docker 插件参数为空时的 bug 的最小参数(详见下文"托管插件可调设置")。

  1. 创建你的 SFTP 卷(标准选项见 sftp.md):
docker volume create firstvolume -d rclone -o type=sftp -o sftp-host=_hostname_ -o sftp-user=_username_ -o sftp-pass=_password_ -o allow-other=true

由于所有选项都是静态的,你甚至不必运行 rclone config 或创建 rclone.conf 文件(但 config 目录仍需存在)。最简情况下,hostnamelocalhostusername/password 填你的 SSH 凭据即可;远程路径可以改成宿主机上的家目录,例如追加 -o path=/home/username

  1. 创建测试容器并把卷挂进去:
docker run --rm -it -v firstvolume:/mnt --workdir /mnt ubuntu:latest bash

一切正常的话,你会直接进入新容器并落在已挂载的 SFTP remote 上,ls 即可列出远端目录。exit 退出后容器停止但卷仍然保留、可复用。不需要时删除它:

docker volume list
docker volume remove firstvolume

进阶场景:多节点 Swarm 上的 Google Drive 卷

接下来是文档展示的更复杂示例:在多节点 Docker Swarm 上使用 Google Drive 卷。你需要在每一个 swarm 节点上安装 Docker、FUSE,创建插件目录并安装 rclone 插件,然后建立 Swarm

Google Drive 卷需要访问令牌(access token),它通过浏览器获取并由 rclone 周期性续期。受管插件无法打开浏览器,因此采用类似 无头机器上配置 rclone 的技术:在一台带浏览器和图形界面的另一台机器上运行 rclone config(参见 rclone_config_create),创建 Google Drive remote(标准选项见 drive.md)。完成后把生成的 rclone.conf 复制到集群每一节点,保存为 /var/lib/docker-plugins/rclone/config/rclone.conf。默认该路径只有 root 可访问,需要相应权限。得到的配置大致如下:

[gdrive]
type = drive
scope = drive
drive_id = 1234567...
root_folder_id = 0Abcd...
token = {"access_token":...}

然后创建名为 example.yml 的 swarm stack 描述文件:

version: '3'
services:
  heimdall:
    image: linuxserver/heimdall:latest
    ports: [8080:80]
    volumes: [configdata:/config]
volumes:
  configdata:
    driver: rclone
    driver_opts:
      remote: 'gdrive:heimdall'
      allow_other: 'true'
      vfs_cache_mode: full
      poll_interval: 0

运行 stack:

docker stack deploy example -c ./example.yml

几秒后 docker 会把解析后的 stack 描述分发到集群,在 8080 端口创建 example_heimdall 服务,在一个或多个节点上运行服务容器,并向节点宿主机上的 rclone 插件请求 example_configdata 卷。用以下命令确认结果:

docker service ls
docker service ps example_heimdall
docker volume ls

浏览器访问 http://cluster.host.address:8080 体验服务;结束用 docker stack remove example。注意:集群节点上按需创建的 example_configdata不会随 stack 一起自动删除,会保留待复用,可在每个节点手工执行 docker volume remove example_configdata 删除。

通过 CLI 创建卷

卷可以用 docker volume create 创建,下面几个例子覆盖了三种典型写法:

docker volume create vol1 -d rclone -o remote=storj: -o vfs-cache-mode=full
docker volume create vol2 -d rclone -o remote=:storj,access_grant=xxx:heimdall
docker volume create vol3 -d rclone -o type=storj -o path=heimdall -o storj-access-grant=xxx -o poll-interval=0

注意 -d rclone 标志表示向 rclone 驱动请求卷——即使安装时用的是全名 rclone/docker-volume-rclone 也能工作,因为你提供了 --alias rclone 选项。

检查卷:

docker volume list
docker volume inspect vol1

三种写法的等价关系

  • vol1remote=storj: 引用 rclone.conf 中现成的 remote(带尾部冒号,可带远程路径)。
  • vol2remote=:storj,access_grant=xxx:heimdall:backend: 前缀 + 连接字符串 创建 on-the-fly(免配置)remote
  • vol3:把 backend 类型与路径拆成独立的 typepath 两个选项,配合带 backend 前缀的参数选项,等价于 vol2 的合并语法(见下文"特殊卷选项")。

卷配置语法:-o 选项

rclone 标志和卷选项都通过 docker volume create 命令的 -o 标志传入,既包含 backend 专属参数,也包含挂载(mount)与 VFS 选项。另有一小批特殊的 -o 选项:remotefstypepathmount-typepersist

remote(可别名 fs:决定使用 config 文件中的哪个现有 remote,带尾部冒号及可选的远程路径。完整语法参见 rclone 远程路径语法文档。别名 fs 可用于避免与 cryptalias 这类 backend 自身的 remote 参数混淆。

on-the-fly 免配置 remoteremote=:backend:dir/subdir 语法用于创建免配置 remote(backend 路径语法),而拆分写法

-o type=backend -o path=dir/subdir

等价于合并写法

-o remote=:backend:dir/subdir

但后者在脚本中更容易参数化;path 部分可选。

选项命名规范:挂载与 VFS 选项(见 rclone serve docker 命令文档)以及 backend 参数(flags 文档)与对应的命令行标志同名,只是去掉 -- 前缀。选项名中的 - 可用 _ 替代。例如 --vfs-cache-mode full 写作 -o vfs-cache-mode=full-o vfs_cache_mode=full。无值的布尔 CLI 标志取 true,如 --allow-other 写作 -o allow-other=true-o allow_other=true

从源码看,上述解析逻辑集中在 options.goapplyOptions:它先挑出 remote/fstypepath 三个特殊键,再把剩余选项按 normalOptName(小写化、去 ---/_ 归一)依次尝试匹配 mount 选项表(mountlib.OptionsInfo)、VFS 选项表(vfscommon.OptionsInfo)与 backend 选项表(fsInfo.Options),最后用 configstruct.Set 批量解析挂载与 VFS 选项并拼出真正的 fsString 连接串。

一个重要限制:你只能为被挂载 remote 的 backend 类型直接引用的那个 backend 提供参数。如果它是包装型 backend(如 alias、chunker、crypt),则无法为它引用的底层 remote/backend 提供选项——这是 rclone 连接字符串解析器的约束。唯一变通办法是把 rclone.conf 提供给插件,或通过插件 args 配置默认参数。

特殊卷选项

mount-type(别名 mount_type:决定挂载方式,一般是 mountcmountmount2 之一。注意:受管 rclone docker 插件目前不支持 cmount,而 mount2 很少需要。该选项默认取最先找到的方法(通常是 mount),所以你通常无需关心。对应实现见 volume.go 中通过 mountlib.ResolveMountMethod 解析。

persist:一个保留的布尔(true/false)选项,未来将允许把 on-the-fly remote 持久化写入插件自身的 rclone.conf 文件。目前代码路径已经预留:见 volume.goif vol.persist 分支会调用 config.CreateRemote,并受 docker.gocanPersist = false 编译常量约束。

连接字符串(Connection Strings)

remote 的值可以用 连接字符串 扩展,作为提供 backend 参数的另一种方式。它与 -o 后端选项等价,但有一处语法差异:连接字符串内部,参数名必须去掉 backend 前缀;而在 -o param=value 数组中必须保留前缀。对比下面两个等价写法,选项数组:

-o remote=:sftp:/home -o sftp-host=localhost

对应的连接字符串:

-o remote=:sftp,host=localhost:/home

这个差异存在的原因是:-o key=val 标志选项不仅包含 backend 参数,还包含挂载/VFS 标志甚至其他设置;同时它能区分 remote 选项与 crypt-remote(或类似命名的 backend 参数),并且在脚本中变量替换更清晰。这一设计在 options.go 中可见:最终连接串由 fsName + "," + connString + ":" + fsPath 拼接而成。

在 Swarm 与 Compose 中使用

Docker Swarm 与 Docker Compose 都用 YAML 文本描述一组容器(stack)、其属性、网络与卷。Compose 使用 compose v2 格式,Swarm 使用 compose v3 格式,两者大体相似,差异见 Docker 文档

卷由顶层 volumes: 节点的子节点描述,每个子节点以其卷命名,至少要包含自解释的 driver: rclone 和与 -o key=val 同等作用的 driver_opts: 结构:

volumes:
  volume_name_1:
    driver: rclone
    driver_opts:
      remote: 'gdrive:'
      allow_other: 'true'
      vfs_cache_mode: full
      token: '{"type": "borrower", "expires": "2021-12-31"}'
      poll_interval: 0

几个容易踩坑的 YAML 细节:

  • YAML 中的选项名倾向用 _ 而非 -
  • YAML 单双引号等价,简单字符串和整数可以不引。
  • 布尔值必须加引号(如 'true'"false"),因为这两个词是 YAML 保留字。
  • 文件系统字符串用 remote(或 fs)键。通常可以省略引号,但如果字符串以冒号结尾则必须加引号,例如 remote: "storage_box:"
  • YAML 对值中的花括号很敏感——那其实是 键/值映射的另一种语法。JSON 访问令牌通常含双引号和花括号,因此必须用单引号包裹(如上面 token 示例所示),否则 YAML 会把它解析为内联映射而报错。

安装为托管插件(Managed Plugin)

Docker daemon 可以从镜像仓库安装插件并以托管方式运行。rclone 官方在 Docker Hub 维护 docker-volume-rclone 插件镜像。托管插件本质上是运行在独立命名空间里的特殊容器,其构建方式可直接在仓库中查验:受管镜像定义见 managed/Dockerfile(入口为 rclone serve docker,内置 fuse3、user_allow_other 配置与环境变量),插件清单见 managed/config.json(声明了 docker.volumedriver/1.0 接口、CAP_SYS_ADMIN 能力、/dev/fuse 设备与 bind mount 目录)。

rclone volume plugin 要求 Docker Engine >= 19.03.15

安装前宿主机上必须先存在两个目录(插件不会自动创建,路径可通过插件设置微调):

  • /var/lib/docker-plugins/rclone/config:预留给 rclone.conf 配置文件,即使为空、配置不存在也必须存在
  • /var/lib/docker-plugins/rclone/cache:存放插件状态文件以及可选的 VFS 缓存。

默认设置安装:

docker plugin install rclone/docker-volume-rclone:amd64 --grant-all-permissions --alias rclone

架构标签(tag)说明

冒号后的 :amd64 部分称为 tag。通常你会为你的架构安装最新插件,此时 tag 直接标明架构。目前可用架构:

  • amd64
  • arm64
  • arm-v7

需要具体版本而非最新版时,使用 :ARCHITECTURE-VERSION 形式的 tag。例如在 arm64 上安装 v1.56.2,使用 tag arm64-1.56.2(注意去掉了 v),完整镜像引用为 rclone/docker-volume-rclone:arm64-1.56.2

另有 latest tag,但 docker 目前(文档写作时)不支持多架构插件,因此该 tag 目前是 amd64 的别名。按惯例 latest 是默认 tag 可省略,故 rclone/docker-volume-rclone:latestrclone/docker-volume-rclone 都指向 amd64 平台的最新插件。amd64 架构的版本化 tag 也可以省略 amd64- 前缀,如 rclone/docker-volume-rclone:amd64-1.56.2 可缩写为 rclone/docker-volume-rclone:1.56.2非 intel 架构必须使用完整 tag,否则 amd64/latest 无法启动。

插件内部工作原理

从源码结构看,托管插件与独立运行共用同一套实现:rclone serve docker 通过 serve.goServeUnix 创建 unix socket,通过 api.go 的路由实现 Docker volume plugin 协议。config 与 cache 目录在启动时 bind mount 进插件容器,docker daemon 连接容器内创建的 unix socket,插件按需创建远端挂载,再由 docker 机制通过内核 mount namespace 传播并 bind mount 进请求方的用户容器。卷的增删查(Create/Remove/List/Get/Path/Mount/Unmount)全部由 driver.go 中的 Driver 实现,并把运行状态序列化保存到 cache 目录下的 docker-plugin.state

插件可调设置

插件停止使用(disable)后可微调若干设置:

docker plugin disable rclone
docker plugin set rclone RCLONE_VERBOSE=2 config=/etc/rclone args="--vfs-cache-mode=writes --allow-other"
docker plugin enable rclone
docker plugin inspect rclone

如果 docker 拒绝禁用插件,你需要先找到并移除与其关联的所有活动卷、使用这些卷的容器与 swarm 服务——这相当繁琐,务必提前规划。可调整的设置包括:argsconfigcacheHTTP_PROXYHTTPS_PROXYNO_PROXYRCLONE_VERBOSE同步各 swarm 节点的插件设置是你自己的职责。

  • args:为 rclone serve docker 设置命令行参数(默认)。参数以空格分隔,因此命令行中通常需要加引号。既支持 serve docker 标志,也支持 rclone 通用标志,包括可作卷创建默认值的 backend 参数。注意:args 值为空时插件会启动失败(由于 docker 的这个 bug),请用例如 args="-v" 作为变通。
  • config=/host/dir:指定 config 目录的备选宿主机路径,插件在此查找 rclone.conf。配置文件不存在不算错误,但目录必须存在。注意插件可能周期性地重写配置文件(例如续期存储访问令牌时),要避免插件与宿主机上其他 rclone 实例同时改配置导致 rclone.conf 损坏。你也可以把 SFTP remote 的私钥等文件放进来——该目录被 bind mount 到插件容器内固定路径 /data/config,例如宿主机上名为 sftp-box1.key 的密钥文件,对应的卷配置选项应为 -o sftp-key-file=/data/config/sftp-box1.key
  • cache=/host/dir:指定 cache 目录的备选宿主机路径。插件把 VFS 缓存放这里,并在此创建维护 docker-plugin.state 文件。插件重启或重装时会读取该文件重建之前存在的卷;但重启后它们不会重新挂载进使用中的容器——这通常不是问题,因为 docker daemon 在故障、守护进程重启或宿主机重启后一般会自动重启受影响容器。与之对应的实现逻辑在 driver.gorestoreStatedocker.goRestoreMounts:插件启动后 socket 先开始服务,挂载在后台并行恢复,单卷有 30 秒超时(volTimeout),慢或不可达的远端不会阻塞插件恢复。
  • RCLONE_VERBOSE:设置插件日志级别,从 0(仅错误,默认)到 2(调试)。也可通过 args="-v [-v] ..." 调整;因为参数更通用,一般很少用此设置。插件输出默认进入本机 docker daemon 日志,日志条目在 docker 日志中显示为 errors,但实际级别保留在封装的 message 字符串中。
  • HTTP_PROXYHTTPS_PROXYNO_PROXY:定制插件代理设置。

也可以在安装时一步到位设置自定义选项:

docker plugin remove rclone
docker plugin install rclone/docker-volume-rclone:amd64 \
       --alias rclone --grant-all-permissions \
       args="-v --allow-other" config=/etc/rclone
docker plugin inspect rclone

健康检查(Healthchecks)

docker volume plugin 协议没有让插件向 daemon 报告卷(不)可用的机制。作为变通,可以设置 healthcheck 来验证挂载是否在响应:

services:
  my_service:
    image: my_image
    healthcheck:
      test: ls /path/to/rclone/mount || exit 1
      interval: 1m
      timeout: 15s
      retries: 3
      start_period: 15s

在 systemd 下运行插件(非托管模式)

大多数场景应优先使用托管模式。此外,MacOS 与 Windows 不支持原生 Docker 插件,这些系统请使用托管模式。仅在 Linux 上继续下面的步骤。

  1. 安装 rclone。可以仅运行 rclone serve docker 回车做连通性测试(直接运行仅支持 Linux,这也是托管模式不在此列的原因之一)。
  2. 安装 FUSE:
sudo apt-get -y install fuse
  1. 下载两个 systemd 配置文件 docker-volume-rclone.servicedocker-volume-rclone.socket,放到 /etc/systemd/system/。仓库中的源文件可直接作为参考:见 contrib/docker-plugin/systemd/docker-volume-rclone.servicecontrib/docker-plugin/systemd/docker-volume-rclone.socket。service 文件里通过 RCLONE_CONFIGRCLONE_CACHE_DIR 环境变量指向 /var/lib/docker-plugins/rclone/ 下的 config/cache 目录,并用 ExecStartPre 预创建所需目录。
cp docker-volume-plugin.service /etc/systemd/system/
cp docker-volume-plugin.socket  /etc/systemd/system/

本节命令均需以 root 运行,为简洁省略了 sudo 前缀。创建服务所需目录:

mkdir -p /var/lib/docker-volumes/rclone
mkdir -p /var/lib/docker-plugins/rclone/config
mkdir -p /var/lib/docker-plugins/rclone/cache

socket 激活模式运行插件服务:

systemctl daemon-reload
systemctl start docker-volume-rclone.service
systemctl enable docker-volume-rclone.socket
systemctl start docker-volume-rclone.socket
systemctl restart docker

或者直接运行服务

  • systemctl daemon-reload 让 systemd 读取新配置;
  • systemctl enable docker-volume-rclone.service 使服务开机自启;
  • systemctl start docker-volume-rclone.service 立即启动服务;
  • systemctl restart docker 重启 docker daemon 使其发现新插件 socket。注意托管模式下不需要这步,因为 docker 自己知道插件状态变化。

两种方式对用户等价,文档作者个人偏好 socket 激活。默认 unix socket 位于 /run/docker/plugins/rclone.sock

故障排查

查看托管插件设置:

docker plugin list
docker plugin inspect rclone

注意 docker(包括最新的 20.10.7)不会显示 args 的实际值,只会显示默认值。用 journalctl --unit docker 查看托管插件输出(属 docker daemon 日志一部分),docker 会把插件行显示为 errors,但实际级别可从封装的 message 字符串看出。

通常你会安装最新版插件,打印实际安装版本:

PLUGID=$(docker plugin list --no-trunc | awk '/rclone/{print$1}')
sudo runc --root /run/docker/runtime-runc/plugins.moby exec $PLUGID rclone version

甚至可以用 runc 进入插件容器内的 shell:

sudo runc --root /run/docker/runtime-runc/plugins.moby exec --tty $PLUGID bash

也可以用 curl 检查插件 socket 连通性(通常不需要):

docker plugin list --no-trunc
PLUGID=123abc...
sudo curl -H Content-Type:application/json -XPOST -d {} --unix-socket /run/docker/plugins/$PLUGID/rclone.sock http://localhost/Plugin.Activate

如果插件仍无法正常工作,在用上述方法诊断无效后,作为最后手段可以清除插件状态。注意:所有现有 rclone docker 卷很可能需要重建(重装不会清理状态文件,以便于恢复)。操作如下:

docker plugin disable rclone # 禁用插件确保无干扰
sudo rm /var/lib/docker-plugins/rclone/cache/docker-plugin.state # 删除插件状态
docker plugin enable rclone # 重新启用插件

安全须知与已知问题

插件 socket 等同于高权限入口

serve docker 的插件 API 接受 remote(即 fs)选项,它会被当作 rclone 连接字符串解析。连接字符串是可信配置:可以内联 backend 选项,且部分 backend 会用这些选项执行本地命令(例如 sftp backend 的 ssh 选项会派生外部二进制)。因此任何能向插件 socket 发请求的人,都可能让以 rclone serve docker 身份(通常是 root)运行 rclone 执行任意命令。请把 socket 访问权视同该级别的权限,只暴露给可信调用方。(详见仓库内嵌的 docker.md "Security" 一节。)

实现层面:监听默认 unix socket 时,rclone 以 0660 模式创建、属主 root、属组由 --socket-gid 指定(默认进程 GID),因此只有 root 与该组成员——通常只有 docker daemon——能访问。不要放宽这些权限或把属组交给不可信用户。使用 --socket-addr 监听 TCP 时没有任何认证,任何能打开该端口的人都能触达 API,务必绑定回环地址或可信地址并用防火墙保护。不过持有 Docker daemon 权限本身就等价于宿主机 root,所以能执行 docker volume create 的调用方并不会因此获得新能力——真正的风险是把 socket 暴露得比 daemon 本身更广。

docker.go 可见相关标志:--socket-addr(默认空即走 unix socket)、--socket-gid--base-dir--forget-state--no-spec,以及挂载/VFS 全套通用标志。

重启/升级插件后需重启使用中的容器

插件重启(docker plugin disable && docker plugin enable、升级插件或宿主机重启)必然停止并重启提供 FUSE 挂载的进程。已经在运行并持有 rclone 卷文件句柄的容器,其句柄指向旧(已死)挂载,会持续返回 transport endpoint is not connected,直到容器被重启。这是替换活跃 FUSE 挂载背后进程的固有限制,rclone 无法避免——插件自身会恢复,新启动的容器正常工作,但:

  • 重启插件后,请重启任何正在使用 rclone 卷的容器(如 docker restart <container>),或先停后启;
  • 数据库与持续占用文件的应用(Grafana、Prometheus、基于 SQLite 的应用等)受影响最大,应始终重启。

更新卷设置的陷阱

Docker CLI 没有类似 docker volume update 的命令。你可能会想对已有卷再执行 docker volume create 传入新选项,但这里有个坑:该命令什么都不会做,甚至不会报错。因此必须先把卷删掉再用新设置重建:

docker volume remove my_vol
docker volume create my_vol -d rclone -o opt1=new_val1 ...

然后验证设置确实更新:

docker volume list
docker volume inspect my_vol

若 docker 拒绝删除卷,应先找出使用它的容器或 swarm 服务并停掉它们。

小结

从单机 SFTP 到多节点 Swarm Google Drive,从 -o 参数语法到 YAML 的 driver_opts,再到托管模式与 systemd 自托管两种部署形态,rclone 的 Docker volume plugin 为容器生态提供了把任意云存储当作数据卷的通道。理解这套机制的核心在于三件事:remote/type/path 三种卷定义写法的等价关系、backend 前缀在 -o 与连接字符串两种语法中的取舍,以及托管插件的目录与状态文件约束。更进一步,仓库中 cmd/serve/docker 的源码(入口 docker.go、选项解析 options.go、卷生命周期 volume.go、驱动与状态持久化 driver.go)以及 contrib/docker-plugin 下的镜像与 systemd 资源,为深入理解和二次开发提供了完整的参照实现。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
898
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
921
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.8 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
391