新闻详情

新闻详情

首页 / 资讯中心 / 详情

Docker数据卷持久化全解:从容器存储原理到卷映射与备份实践

发布时间:2026/10/1 18:04:43来源:尧图网络
Docker数据卷持久化全解:从容器存储原理到卷映射与备份实践
用 Docker 跑过 MySQL 的人基本都经历过那几分钟的心跳骤停容器明明还在运行数据表也建好了但重启一次之后新写进去的数据全没了。更常见的翻车现场是docker rm -f之后才发现里面存着唯一一份没导出的测试数据。我第一次踩这个坑是在一台云服务器上当时脑子里的模型还是“容器里的一切都会保留”结果一条删除命令就让我重新弄了三个小时的配置。后来我把教训浓缩成一句话容器适合跑进程不适合存数据想让数据活着就必须把数据放到容器外面的卷里。这篇文章完整拆解 Docker 数据卷映射。我按五个层次来写先说清楚 Docker 存储的底层机制再把-v、--mount、Compose 卷声明讲透然后集中过一遍权限、路径、备份这些高频问题接着给出生产环境按数据类型选卷的方法最后补上只读挂载、NFS 卷、清理策略这些进阶手段。无论你是刚装好 Docker Desktop 的新手还是已经用 Docker 维护 MySQL、Redis、GitLab 的老手这篇文章都能帮你把持久化这件事彻底理顺。1. 容器为什么一删就没先搞懂镜像层和可写层1.1 镜像的只读层与容器可写层Docker 镜像不是一个大文件而是由多层只读文件系统叠加出来的。拉取镜像时看到的一行行下载进度每一层都对应一个历史操作装了什么依赖、改了什么配置、复制了哪些源码。容器运行时Docker 会在这些只读层之上再加一个可写层进程对文件的修改最初都落在这里。这里的核心机制叫“写时复制”Copy-on-Write。容器里的进程想改一个文件时Docker 并不到镜像层里直接写而是先把目标文件从下面的只读层复制到可写层再在可写层上做修改。这个过程对应用是透明的但性能上是有代价的——尤其对数据库这种大量写文件的程序每一笔写入都可能触发额外的复制动作。更致命的是生命周期问题。可写层跟着容器走docker stop还好docker rm一执行整个可写层连同里面所有数据一起被丢弃。镜像层还在但你容器运行期间创建的表、上传的图片、写进去的日志全都没了。这就是“数据持久化”这个需求存在的根本原因可写层不是持久化存储它只是容器进程的临时草稿纸。1.2 匿名卷、命名卷和绑定挂载的区别Docker 提供了三种把数据从容器内“转移”到宿主机持久保存的方式很多人搞不清它们的边界我先用一张表说清楚。类型创建方式数据位置典型用途备份难度匿名卷docker run -v /container/pathDocker 托管的宿主机目录随机哈希命名缓存、临时数据较难管理命名卷docker volume create myvol或-v myvol:/pathDocker 托管的宿主机目录有稳定名称数据库文件、应用核心数据容易按名字管理绑定挂载-v /host/path:/container/path宿主机任意路径配置文件、上传目录、开发代码容易直接在宿主机匿名卷最容易被忽略。你只写了-v /var/lib/redis没给卷起名字Docker 会创建一个哈希命名的卷。容器删除时如果没有加--rm这个匿名卷通常会保留下来但它属于哪个容器、里面是什么数据过两周你自己都记不清。我的建议是能起名字的就起名字匿名卷只适合一次性任务的临时结果。命名卷是生产环境的主力。卷的物理位置在 Docker 数据目录下通常是/var/lib/docker/volumes/myvol/_data由 Docker 统一管理备份、迁移、权限控制都有成熟工具链。绑定挂载则是把宿主机某个目录直接交给容器使用数据位置透明适合需要手动访问、编辑和共享的场景。1.3 卷到底是什么Docker 管理的一块宿主机目录从宿主机视角看命名卷无非就是/var/lib/docker/volumes/下面一个带名字的目录。Docker 做的事情是替你创建目录、管理生命周期、在容器启动时做挂载。绑定挂载则连创建目录都由你自己负责Docker 只是在容器启动时把两个目录关联起来。在 Docker Desktop 这类运行在虚拟机里的环境下所谓“宿主机目录”需要稍微打个折扣。容器实际运行在 VM 内部命名卷存在 VM 的虚拟磁盘里绑定挂载则是 VM 和宿主系统之间通过文件共享协议打通。这也是为什么在 macOS 或 Windows 上绑定挂载的性能往往不如命名卷——数据要在两层系统之间传输。理解这些底层关系之后你再看网上各种“数据丢了”的求助帖会发现绝大多数问题都能归到一句话数据放在了错误的层上。下一章我们直接用命令把正确的做法跑通。2. 命令实操从 -v 到 --mount再到 Compose 卷声明2.1 先跑通一个 MySQL 持久化 Demo我不喜欢干讲理论先演示一个最常见的持久化场景MySQL 数据不随容器删除而丢失。第一步创建命名卷docker volume create mysql-data第二步启动容器并挂载卷docker run -d \ --name mysql8 \ -e MYSQL_ROOT_PASSWORD123456 \ -v mysql-data:/var/lib/mysql \ -p 3306:3306 \ mysql:8.0这个命令里最核心的是-v mysql-data:/var/lib/mysql。冒号左边是宿主机侧的卷名右边是容器内 MySQL 的数据目录。MySQL 镜像内部已经声明了/var/lib/mysql是数据目录我们用命名卷把它接管了。接下来验证持久化是否真的生效。先连接数据库建一张表插几行数据docker exec -it mysql8 mysql -uroot -p123456CREATE DATABASE test; USE test; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO users VALUES (1, docker);然后退出执行docker rm -f mysql8再重新创建容器仍然使用同一个卷docker run -d \ --name mysql8 \ -e MYSQL_ROOT_PASSWORD123456 \ -v mysql-data:/var/lib/mysql \ -p 3306:3306 \ mysql:8.0 docker exec -it mysql8 mysql -uroot -p123456 -e SELECT * FROM test.users;如果一切正常你会看到1 | docker还在。这就是持久化的全部意义容器可以随便删卷里的数据安然无恙。2.2 -v 与 --mount为什么官方更推荐 --mount-v写法短但语法比较隐晦。同一件事用--mount写出来是这样docker run -d \ --name mysql8 \ --mount typevolume,sourcemysql-data,target/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD123456 \ mysql:8.0--mount的优点是参数语义明确source是卷名target是容器内路径还可以追加readonly、volume-nocopy这些选项。绑定挂载时--mount的写法也更严谨docker run -d \ --name nginx-test \ --mount typebind,source/home/user/nginx.conf,target/etc/nginx/nginx.conf,readonly \ -p 8080:80 \ nginx:1.27相比之下-v的一个隐患是如果宿主机路径不存在Docker 的行为可能让你迷惑。比如-v /my/path/conf.txt:/app/config当/my/path/conf.txt不存在时Docker 可能会创建一个目录而不是文件导致容器内看到的config是个空目录。用--mount时这类歧义会小很多因为语法强迫你明确typebind和typevolume。我的实际建议是日常敲命令图省事可以用-v但写进脚本、文档、自动化工具时一律用--mount。运维排障时参数少一个歧义就少一次线上事故。2.3 文件挂载与目录挂载的隐藏雷区持久化不仅要做目录还经常要做单文件挂载。比如修改 Nginx 配置docker run -d \ --name nginx \ --mount typebind,source/home/user/nginx.conf,target/etc/nginx/nginx.conf,readonly \ -p 80:80 \ nginx单文件挂载的问题在于Docker 是以“路径”为粒度做挂载而不是以“文件”为粒度。源路径必须是真实存在的普通文件否则 Docker 很可能会创建一个同名目录挂进去。所以用单文件挂载前先用touch或文本编辑器把宿主机上的文件准备好。目录挂载还有一个常被误解的覆盖行为。假如镜像里/app/config已经有一份默认配置文件你把宿主机的/data/config绑定挂载过去容器内看到的就完全是宿主机的目录内容镜像里的默认文件不会自动合并。这听起来像废话但很多人踩过坑把宿主机空目录挂到 Nginx 的/usr/share/nginx/html然后发现静态页面 404因为镜像里的初始index.html被空目录“遮住”了。理解这个逻辑很重要绑定挂载是一种覆盖不是一种合并。想在挂载的同时保留镜像内的默认内容你得在挂载后的第一次启动时把镜像内文件复制出来或者改用命名卷让 Docker 帮你做初始化复制。2.4 Compose 下的卷声明方式单机多容器用 Docker Compose 管理时卷的写法有自己的语法。这是标准模板services: mysql: image: mysql:8.0 volumes: - mysql-data:/var/lib/mysql - ./mysql-config:/etc/mysql/conf.d:ro environment: MYSQL_ROOT_PASSWORD: 123456 volumes: mysql-data:注意两点。第一服务里出现的mysql-data必须在顶层volumes里声明否则 Compose 会认为它是一个绑定挂载的相对路径。第二Compose 默认创建的卷会自动加上项目名前缀这里是形如项目名_mysql-data的卷名。如果你希望直接使用手工创建的卷要加一句volumes: mysql-data: external: true还有一个我特别想提醒的习惯docker compose down默认不会删卷但docker compose down -v会把 Compose 文件里声明的卷一并删掉。这个参数你加不加差别是一条命令的事还是两年数据的事。生产环境除非你确认要清库否则不要随手带-v。3. 权限、覆盖和备份数据卷最容易翻车的几个场景3.1 宿主机目录 Permission denied 的真实原因用绑定挂载跑 MySQL 或 Redis第一次启动经常遇到容器起不来的情况日志里写着Permission denied。很多人第一时间怀疑是 Docker 权限问题其实往往是宿主机目录的所有权不对。容器内进程并不是以宿主机用户身份运行的。MySQL 官方镜像里的 mysqld 以uid999的系统用户运行如果你把目录创建在/var/lib/mysql-host下它的属主是你当前登录的用户可能是uid1000那 mysqld 自然没有写权限。解决办法很简单把宿主机目录的属主改成容器内进程对应的 UIDmkdir -p /data/mysql chown -R 999:999 /data/mysql然后再启动容器。不确定镜像内用户 UID 时可以先进容器看一眼docker run --rm --entrypoint id mysql:8.0有些镜像的进程用root跑绑定挂载反而没这个问题但我不建议为了省事把所有容器都改成root安全成本太高。3.2 容器里的 root 不等于宿主机的 rootLinux 的权限体系里有个很容易混淆的点容器里的root和宿主机的root不是同一个主体。这是因为容器使用了用户命名空间隔离容器内 UID 0 只是宿主机上一个普通 UID 被映射后的结果。大多数默认配置下容器内的 root 对应宿主机的 root一旦你把宿主机敏感目录绑定挂载进去容器里的进程就能直接读写宿主机的/etc、/boot。这不是危言耸听。如果一个 Web 应用容器被攻破攻击者拿到的是容器内 root但通过 bind mount 的攻击路径可以直接污染宿主机文件。我的原则是绑定挂载只给必要路径范围越小越好。不需要写权限的目录一律加readonly。禁止把整个/、/etc、/usr挂进容器。对不可信镜像优先用命名卷而不是绑定挂载。在 Docker Desktop 环境下绑定挂载还牵扯到文件共享设置。macOS 上默认能挂载/Users、/Volumes等目录Windows 上受 WSL 2 的磁盘共享限制。遇到挂载目录不生效时先去 Docker Desktop 的 Settings 里确认目录是否在共享列表中。3.3 挂载点不为空时会发生什么回到第 2.3 节提到的覆盖行为这里再扩展一下命名卷的情况。当你把一个全新命名的卷挂载到容器内的非空目录时Docker 会判断如果卷是空的且镜像目标目录里有内容就把镜像内容复制进卷。这个“自动初始化”是命名卷特有的能力绑定挂载没有。封面看起来是好事但它也可能带来困惑。比如我把一个已经存在数据的旧卷挂到新版本的容器上目标目录结构发生了改变旧数据文件和新镜像期望的文件混在一起服务可能启动失败。这种迁移场景需要手动比对不能指望 Docker 自动帮你整理。还有种常见误操作把带数据的 A 卷挂到一个目标路径同时又把 V 卷挂到另一个路径两个卷里各有一份数据最终只有一个目录被应用真正使用另一个数据“消失”在了容器文件系统里。排查时用docker inspect container看Mounts部分每一项的Destination和Source会清清楚楚列出绝大部分路径冲突靠这一步就能定位。3.4 数据卷备份与恢复tar 才是老朋友数据卷本身是一个目录备份最朴素高效的方案是起一个临时容器把卷挂进去用tar打包。以下命令会把mysql-data这个命名卷打包到当前目录docker run --rm \ -v mysql-data:/data \ -v $(pwd):/backup \ alpine tar czf /backup/mysql-data.tar.gz -C /data .恢复时先把容器停掉再起临时容器解包docker run --rm \ -v mysql-data:/data \ -v $(pwd):/backup \ alpine tar xzf /backup/mysql-data.tar.gz -C /data这里有个很重要的操作细节打包前先停止使用该卷的容器。数据库和 Redis 这类程序在运行中会持续写入文件直接对卷做文件级备份可能备份到一个写到一半的不一致状态恢复时触发崩溃恢复流程甚至直接数据损坏。正确流程是docker stop容器、打包、docker start容器。如果是 MySQL 这类自带逻辑备份工具的数据库更推荐用mysqldump做逻辑备份docker exec -it mysql8 \ mysqldump -uroot -p --all-databases /backup/all.sql逻辑备份生成的是 SQL 语句恢复时能跨版本、跨架构使用比把整个数据目录原样搬走更稳。记住一个原则文件级备份适合停机场景逻辑备份适合在线场景。各有各的用处不能互相替代。4. 生产环境里该怎么选数据库、日志和配置文件4.1 按数据类型画一张持久化地图很多初学者问我“这个文件到底要不要挂卷”答案取决于数据类型。我习惯把数据分成六类每类都有对应的卷策略。数据类型推荐方案理由数据库文件命名卷生命周期稳定便于备份迁移避免被宿主机文件误操作缓存数据命名卷或 tmpfsRedis 持久化用命名卷纯缓存用 tmpfs上传文件绑定挂载宿主机直接访问rsync 同步方便配置文件绑定挂载 readonly随时可编辑容器内不可篡改日志文件绑定挂载或命名卷需要长期留存用绑定挂载短期可清空用命名卷临时文件tmpfs进程跑完数据就丢同时也不占磁盘这套分类的背后逻辑是谁需要被宿主机直接访问谁只需要被 Docker 管理谁要长期保留谁可以随时重建。配置文件和上传文件用绑定挂载因为它们和宿主机关系密切。配置文件要经常手工改上传文件经常要备份同步。数据库文件虽然也是长期数据但它不需要你在宿主机上直接掏出来编辑用命名卷的好处是把文件访问隔离在 Docker 层降低误操作风险。4.2 卷容器方案为什么不建议新项目再用在网上老教程里经常会看到一种“数据卷容器”的玩法docker create -v /var/lib/mysql --name mysql-data mysql:8.0 docker run -d --volumes-from mysql-data --name mysql mysql:8.0这种方案在 Docker 1.9 之前是标准做法因为当时没有命名卷要持久化只能用这种间接方式。后来 Docker 原生支持命名卷之后数据卷容器就成了历史遗留。新项目里再这么做整个数据流非常隐晦谁持有数据、数据实际在哪、怎么备份都不直观。如果你在旧脚本里看到--volumes-from不要急着照搬。它变成一个标准容器连接旧有数据卷的兼容方式。现在明确建议直接创建命名卷挂到目标容器上数据归属清晰排障也容易。docker stop mysql docker rm mysql docker volume rm mysql-data-old清理完了之后再按新的命名卷方案启动。老方案不是不能用而是会增加认知负担对一个被持久化问题困扰的人来说简单直接比酷炫重要得多。4.3 大数据量场景性能、备份和卷驱动大数据量的持久化首先要关注性能。容器默认的可写层基于 overlay 文件系统写入时要处理层叠逻辑对高并发写入不是很友好。把数据放到卷里等于绕开了 overlay直接写在宿主机文件系统上性能会明显改善。但也别迷信“卷就一定快”文件系统本身、磁盘类型、Docker Desktop 的虚拟化开销都有影响。在 Docker Desktop for Mac/Windows 上绑定挂载走的是文件共享链路性能常常比命名卷差不少。跑数据库这类高 IO 负载时宁可先把数据落在 VM 内的命名卷里再通过docker cp或网络传输和宿主机交互也不要直接挂一个巨大目录。这个权衡可能反直觉但实测下来对 IO 密集型应用影响很大。备份层面生产数据库卷的体积可能上百 G。用tar一层层打包不是不行但每个备份都占用大量磁盘和时间。更实际的做法是数据库用mysqldump/pg_dump做逻辑备份定期全量加增量。对数据卷本身做宿主机文件系统快照比如 LVM 快照、云盘快照。文件类数据用rsync增量同步到备份服务器。对单机 Docker 来说卷驱动默认是local。多台机器要共享同一份卷数据就需要 NFS 或专门的卷插件。后面第 5 节我会讲 NFS 卷的配置方式这里先记住一个常识卷插件不会自动让数据变得安全它只是把存储位置从本地挪到了外部备份责任一样得自己扛。4.4 数据一致性先停服务再备份还是在线热备这是备份场景里最容易被忽略的一道坎。很多人在容器运行状态直接去拷贝数据目录拷完自我感觉良好恢复时才发现文件时间线乱了。对单文件型数据库来说冷备是最稳妥的停服务、打包、起服务。缺点是要有停机窗口。对网站这类允许短暂延迟的场景完全够用。对 7x24 小时要求高的系统冷备就不现实了这时候要用数据库自己的在线备份工具docker exec mysql8 \ mysqldump -uroot -p123456 --single-transaction --all-databases /backup/mysql-all.sql--single-transaction能保证备份时的一致性快照不阻塞线上写入。Redis 则可以用redis-cli执行SAVE或BGSAVE生成 RDB 文件后再把持久化文件拷贝出去。如果什么逻辑备份工具都没有只能做文件级拷贝那我建议至少先执行一次sync或容器内fsync再拷贝。虽然不能完全保证数据一致但比直接cp要稳得多。备份这道工序宁可多停一分钟也不能赌数据一致性。5. 卷的高级玩法只读挂载、NFS 卷和清理策略5.1 用只读挂载和 tmpfs 收紧权限生产环境最容易被忽视的安全策略就是把该只读的地方全部设成只读。容器内的应用如果不需要修改配置文件、不需要写宿主机代码你就没有理由给它写权限。绑定挂载加只读--mount写法是加一个readonlydocker run -d \ --name web \ --mount typebind,source$(pwd)/app,target/app,readonly \ -p 8080:80 \ node:20Compose 里的写法是在卷条目后面追加rovolumes: - ./config:/etc/config:ro只读挂载不仅防止应用误改宿主机文件也防住容器被攻破后的横向破坏。一旦容器内的攻击者想往挂载目录里写恶意文件直接会得到Read-only file system这条防线能拦住大量低水平攻击。临时数据则用 tmpfs 更合适。tmpfs 是一种基于内存的文件系统容器停止后内容即消失适合放/tmp、缓存、临时渲染文件docker run -d \ --mount typetmpfs,target/cache \ nginx高速缓存类应用把临时数据放内存既降磁盘负载又免去清理的烦恼。注意 tmpfs 占用的是容器内存配额用多了也会触发 OOM不是无限制的。5.2 容器重建时数据不丢的三种实用姿势部署更新时最怕什么怕容器重建之后发现卷挂错了。这里分享三个保命姿势。第一种命名卷固定下来。无论容器删多少次只要启动命令或 Compose 文件里挂的是同一个命名卷数据就不会丢。关键是在任何变更前先备份卷名别用匿名卷。第二种绑定挂载路径固定下来。宿主机目录一旦选定不要轻易换。路径变了新容器看到的就不是原来那份数据。我在线上见过太多人图省事把/data/app1改成/data/app2然后老数据就“消失”了。第三种重建之后立刻验证。容器启动后别急着走先确认挂载是否真的生效docker inspect container --format {{json .Mounts}}这个命令会输出所有挂载的源和目标一一核对后再跑一遍关键业务验证。重建容器不可怕可怕的是你压根没发现新容器访问的是另一份数据。5.3 跨主机共享数据用 NFS 卷把存储外移单机 Docker 的数据卷只在本机有效跨主机共享时最常用的方案是 NFS。Docker 的local卷驱动支持直接挂 NFS不需要额外插件docker volume create \ --driver local \ --opt typenfs \ --opt oaddr192.168.1.100,rw \ --opt device:/data/nfs \ nfs-volume然后在容器里挂载这个卷docker run -d \ --mount sourcenfs-volume,target/shared \ ubuntu tail -f /dev/nullCompose 文件里也能声明volumes: nfs-volume: driver: local driver_opts: type: nfs o: addr192.168.1.100,rw device: :/data/nfsNFS 卷的好处是多个主机可以同时看到同一份数据方便做负载均衡后面的文件共享。但注意NFS 的单点故障会影响所有容器网络抖动也会放大写延迟。数据库这样的高 IO 应用不要直接跑在 NFS 上搞不好会把整个集群的性能拖垮。跨机器迁移数据时我更推荐一个折中方案先在源机器上把命名卷备份为 tar再传到目标机器上用同样的命令恢复。整个过程可以脚本化出错概率比直接跨主机挂卷小得多。5.4 定期卷清理与容量监控别让磁盘悄悄被吃满卷不会自动瘦身数据不会自己变少。运行一段时间后宿主机磁盘常常被一堆没用但还在占地方的匿名卷蚕食。查看磁盘占用状态docker system df它会列出 Images、Containers、Local Volumes、Build Cache 的占用情况。如果发现卷占了很多空间逐项确认是否还被使用确认孤儿卷后可以清理docker volume prune这条命令会删除所有未被容器引用的卷不带确认会直接删所以执行前务必先跑docker volume ls看一遍。比prune更稳妥的做法是查看每个未使用卷的大小避免误删大卷docker run --rm -v myvol:/data alpine du -sh /data还有一个高频容量坑容器日志默认由 Docker 的 json-file 驱动保存如果应用疯狂打日志宿主机的磁盘会被日志文件默默灌满。这和卷不完全是一回事但很多人会把它当成卷问题来排查。正确的预防手段是在 Docker daemon 配置里限制日志文件大小{ log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } }改完重启 Docker 后新日志就会按这个策略滚动。把卷清理和日志清理一起纳入定期巡检才能真正避免磁盘满导致的容器集体故障。数据卷映射这件事说白了一点不复杂先明确哪些数据要活下来再决定用命名卷还是绑定挂载最后把权限和备份做成习惯。每条命令背后的原理我都尽量讲透但真正要练的是你自己的操作节奏。我现在的习惯是每次启动带卷的容器前先写清楚这个卷是干什么用的每次动手删容器前先看一眼docker volume ls。别嫌啰嗦等你经历过一次数据恢复还失败的深夜就知道这几秒检查有多值钱。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

GEO学习瓶颈破解:四层能力模型与从0到1实操闭环 2026/10/1 18:48:15

GEO学习瓶颈破解:四层能力模型与从0到1实操闭环

开头想跟你聊聊一个挺扎心的场景:2025年底到2026年,大家好不容易把传统SEO那套玩明白了,结果AI搜索一出来,老方法明显不顶用了。身边很多同行开始学GEO(Generative Engine Optimization,生成式引擎优化&…

阅读更多 →
Vue中import/export语法详解:ES Module核心与报错排查指南 2026/10/1 18:48:15

Vue中import/export语法详解:ES Module核心与报错排查指南

讲真的,import和export这俩语法,我见过太多Vue新手栽在上面。不是不会写,是搞不明白为什么有时候导入要带花括号、有时候不带;为什么这个文件只能导出一个、那个文件能导出好几个;为什么明明照着文档写的,运…

阅读更多 →
判定表法:业务规则到测试用例的系统化翻译方法 2026/10/1 18:48:15

判定表法:业务规则到测试用例的系统化翻译方法

1. 判定表法不是“填表格”,而是把业务规则翻译成可执行的测试逻辑你有没有遇到过这样的场景:需求文档里写着“当用户等级为VIP且订单金额大于500元时,自动赠送积分;若为普通用户但满足促销活动条件,则发放优惠券&…

阅读更多 →
让Agent自己整理笔记:memsearch后台记忆维护机制(PROJECT.md与USER.md)完整解析 2026/10/1 18:48:09

让Agent自己整理笔记:memsearch后台记忆维护机制(PROJECT.md与USER.md)完整解析

让Agent自己整理笔记:memsearch后台记忆维护机制(PROJECT.md与USER.md)完整解析 【免费下载链接】memsearch A persistent, unified memory layer for all your AI agents (e.g. Claude Code, Codex, DSH), backed by Markdown and Milvus. …

阅读更多 →
Mano-P长任务规划原理:思考-行动-验证循环如何支撑上百步业务自动化 2026/10/1 18:48:09

Mano-P长任务规划原理:思考-行动-验证循环如何支撑上百步业务自动化

Mano-P长任务规划原理:思考-行动-验证循环如何支撑上百步业务自动化 【免费下载链接】Mano-P Mano-P: Open-source GUI-VLA agent for edge devices. #1 on OSWorld (specialized, 58.2%). Runs locally on Apple M4 Mac mini/MacBook — no data leaves your devic…

阅读更多 →
HuggingFace模型包装成OpenAI兼容接口:vLLM/Ollama/MindIE/TensorRT-LLM部署实战 2026/10/1 18:48:08

HuggingFace模型包装成OpenAI兼容接口:vLLM/Ollama/MindIE/TensorRT-LLM部署实战

1. 为什么要把 HuggingFace 模型包装成 OpenAI 兼容接口1.1 一个接口打通所有下游工具的真实痛点手里攒了一堆 HuggingFace 上的开源模型,Qwen、DeepSeek、GLM、Llama 各有各的加载方式,每个模型的 tokenizer、chat template、推理框架都不一样。今天想用…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉