Neo4j进程在后台运行,即使Docker容器没有运行

oknwwptz  于 2023-06-22  发布在  Docker
关注(0)|答案(1)|浏览(415)

我正在使用Neo4j Docker Image的项目。我从这里提取了图像:https://hub.docker.com/_/neo4j。问题是neo4j进程即使在停止容器后仍继续运行。所以当我运行docker start neo4j_db时,它不会启动,当我检查日志时,它说:

Neo4j is already running (pid:7).
Run with '--verbose' for a more detailed error message.
Neo4j is already running (pid:7).
Run with '--verbose' for a more detailed error message.

通过使用docker inspect,,我发现它运行的初始命令是tini -g -- /startup/docker-entrypoint.sh neo4j。我想停止这个全局neo4j进程,以便在运行docker start neo4j_db时,我可以在浏览器的http://localhost:7474上使用它。
我是neo4j的新手,所以我不知道如何继续。任何帮助都是非常感谢的。
更新:我采取的步骤顺序:

1. docker pull neo4j
 2. docker run --name neo4j_db --publish=7474:7474 --publish=7687:7687 --volume=./neo4j:/neo4j/data -itd neo4j
 3. docker stop neo4j_db # whenever I want to stop the container
 4. docker start neo4j_db # whenever I want to start the container

另外,我还没有任何dockerfile。一旦我有了一个容器,我就可以启动/停止它以便将来使用它。

8dtrkrch

8dtrkrch1#

正如在评论中已经说过的,杀死容器比阻止它们更正常。由于neo4j是一个数据库,因此您需要特别确保没有任何流浪容器仍在运行并写入数据,从而导致数据损坏。
要使数据在容器之间持久化,请将数据文件夹挂载到/data,而不是/neo4j/data。如果你把它挂载到/data,那么neo4j会自动把所有内容写到那里,你可以在未来的容器中使用相同的数据来继续上一个容器。
对于你的例子,所有的意思是你应该做的:

docker kill neo4j_db
docker run -itd \
--name neo4j_db \
--publish=7474:7474 \
--publish=7687:7687 \
--volume=./neo4j:/data \
neo4j

相关问题