使用 Docker 卷持久化数据
Docker 容器是临时的。当容器停止时,写入其中的任何数据都会丢失。因此,如果您想在使用 Docker 运行 Neo4j 时持久化数据,则必须将存储挂载到容器中。存储还可以让您在容器内外存取数据。
可以通过两种方式将存储挂载到容器:
-
宿主机文件系统上的文件夹。
-
Docker 数据卷(Volume)— 由 Docker 管理的命名存储位置。
有关如何将存储挂载到 Docker 容器的说明,请参阅 Docker 官方文档:绑定挂载 (Bind mounts) 和 数据卷 (Volumes)。
Neo4j 提供了多个存储挂载点,以简化在 Docker 中使用 Neo4j 的过程。以下部分描述了这些挂载点及其使用方法。
Neo4j 挂载点与权限
下表是 Neo4j Docker 镜像所识别的挂载点及所需文件权限的完整参考。
所有列出的挂载点都是可选的。Neo4j 可以在未挂载任何数据卷的情况下在 Docker 中运行。但是,除了最基本的用例,将存储挂载到 /data 被认为是必不可少的。
|
如果容器发生任何意外,在没有挂载 |
| 挂载点 | 所需权限 | 描述 |
|---|---|---|
|
读、写 |
Neo4j 数据库的数据存储位置。请参阅 将存储挂载到 |
|
读、写 |
Neo4j 日志的输出目录。请参阅 将存储挂载到 |
|
读[1] |
在启动时向 Neo4j 传递配置文件。 |
|
读[2] |
允许您在容器化 Neo4j 中安装插件。 |
|
读 |
通过挂载许可证文件夹为 Neo4j 及任何插件提供许可证。 |
|
读 |
使 csv 和其他可导入文件可供 neo4j-admin import 使用。 |
|
读 |
为 Neo4j 提供 SSL 证书以进行消息加密。 |
|
write |
企业版 (Enterprise Edition) 指标文件的输出目录。请参阅 指标。 |
1. 在使用 dump-config 功能时需要写权限。
2. 在使用 NEO4J_PLUGINS 功能下载和存储插件时需要写权限。 | ||
将存储挂载到 /data
Docker 中的 Neo4j 将数据库文件存储在 /data 文件夹中。通过将存储挂载到 /data,写入 Neo4j 的任何数据在容器停止后都会被保留。
停止容器,然后使用挂载到 /data 的相同文件夹重新启动,将启动一个新的容器化 Neo4j 实例,其中包含相同的数据。
|
如果 Neo4j 无法正常关闭,它可能导致数据处于损坏状态,并可能在启动时失败。这种情况与在容器外运行 Neo4j 但未正常关闭时是一样的。 |
/data 挂载点的两种方式/datadocker run -it --rm \
--volume $HOME/neo4j/data:/data \
neo4j:2026.03.1
/datadocker volume create neo4jdata (1)
docker run -it --rm \
--volume neo4jdata:/data \ (2)
neo4j:2026.03.1
| 1 | 创建一个名为 neo4jdata 的 Docker 数据卷。 |
| 2 | 将名为 neo4jdata 的数据卷挂载到 /data。 |