Windows WSL下Docker运行Memgraph如何实现数据持久化到本地硬盘
问题原因
你的配置有两处错误导致数据没有写入本地Windows目录:
- 挂载参数使用了Docker命名卷格式:
-v mg_lib:/xxx中mg_lib无前导斜杠,会被Docker识别为内部命名卷,数据存储在Docker的内置存储目录,不会写入你指定的WSL路径。 - 容器内挂载路径配置错误:Memgraph在容器内默认的数据存储路径为
/var/lib/memgraph、日志路径为/var/log/memgraph、配置路径为/etc/memgraph,你填写的/mnt/c/temp/xxx是WSL的Windows宿主路径,Memgraph不会将数据写入该目录。
解决步骤
- 先停止当前运行的Memgraph容器,避免旧容器占用端口或存储。
- 给目标Windows路径开放写入权限,在WSL终端执行如下命令:
sudo chmod 777 /mnt/c/temp/memgraph/lib /mnt/c/temp/memgraph/log /mnt/c/temp/memgraph/etc
- 使用绑定挂载格式重新启动容器,将宿主路径放在冒号前,容器内正确路径放在冒号后,同时开启自动快照保证数据及时落盘:
docker run -it -p 7687:7687 -p 3000:3000 \ -e MEMGRAPH="--bolt-port=7687 --storage-snapshot-interval-sec=30" \ -v /mnt/c/temp/memgraph/lib:/var/lib/memgraph \ -v /mnt/c/temp/memgraph/log:/var/log/memgraph \ -v /mnt/c/temp/memgraph/etc:/etc/memgraph \ memgraph
验证方法
- 进入Memgraph控制台写入测试节点,执行
CREATE SNAPSHOT;手动触发数据落盘。 - 打开Windows的
C:\temp\memgraph\lib目录,能看到后缀为.bin的快照文件即代表持久化配置生效。 - 后续重启容器后,已写入的节点数据不会丢失。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

