Docker“权限被拒绝”错误
启动 docker 实例时,可能会出现权限被拒绝的错误,例如
2018-06-14 23:20:50.962+0000 ERROR Failed to start Neo4j: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@7880cdf3' was successfully initialized, but failed to start. Please see the attached cause exception "/logs/debug.log (Permission denied)". Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@7880cdf3' was successfully initialized, but failed to start. Please see the attached cause exception "/logs/debug.log (Permission denied)".
并可能启动失败。
Docker 曾以 root 身份运行,现已更改。此更改引入于 3.1.8、3.2.9、3.3.4 版本的 docker 镜像以及 3.4 版本及更高版本中。为了使任何较新的 neo4j 版本能够继续访问这些旧的 logs
、conf
、data
文件,您必须更改旧版本创建的文件的权限 - 特别是现有日志文件和数据文件。
授予“所有人”对日志目录的访问权限确实可以规避“权限被拒绝”错误。但是,这不是首选的解决方案。我们建议以下两种方法:
A) 将被传递给 docker 的用户设置为日志目录的所有者或主要组,并赋予读写权限。如何将 --user
作为参数传递给 docker 可以在以下知识库文章中找到。https://support.neo4j.com/hc/en-us/articles/360012923574-Running-Docker-as-Non-Root-User
或者
B) 创建一个对日志目录具有访问权限的辅助组,例如运行 sudo groupadd logs,并将用于运行 neo4j 的用户添加到该组。如果采用此方法,除了将辅助组传递给 docker 外,还必须使用 --group-add
标志。例如
group-add="$(getent group logs | cut -d ":" -f3)"
此页面有帮助吗?