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 的用户添加到该组。如果这样做,则必须使用 --group-add
标志将辅助组额外传递给 docker。例如
group-add="$(getent group logs | cut -d ":" -f3)"
此页面有帮助吗?