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