Dockerized Kibana外部化日志

我一直试图外部化运行在docker集装箱运行kibana日志没有运气。 我的docker工作如下:

kibana: image: kibana:latest container_name: kib ports: - "5601:5601" links: - elasticsearch volumes: - /var/log:/var/log 

和Kibana.yml – logging.dest = / var / log / kibana.log

但是,当我运行它我收到一个错误在容器中如下:

 events.js:85 throw er; // Unhandled 'error' event ^ Error: EACCES, open '/var/log/kibana.log' at Error (native) 

它看起来像一个权限问题(我在Ubuntu FYI上运行它)。 我将主机上的文件夹的权限设置为7777.任何想法? 谢谢

kibana进程作为kibana用户(在Dockerfile中定义)由ENTRYPOINT "/docker-entrypoint.sh"脚本运行 。

正如在这个类似的问题看到的

dockerfile创build一个名为sinopia的用户并运行一切。
一般而言,这是一个很好的做法,但是在访问主机文件系统docker时,主机上使用的是与容器上相同的uid 。 容器中的根具有主机上的根访问权限,容器中具有id 1000的用户sinopia映射到主机上的用户1000。

如果您在ID为1000的主机上创build用户,则可以根据需要将该用户权限授予主机目录。

检查由Dockerfile创build的用户sinatra的id,并查看是否可以授予对主机上同一个id的访问权限。

如果你chmod +777 ,再次尝试docker-compose up 。 (这是为其他docker的图像,如libreboard

OP sharman 在评论中解释了为什么chmod 777无效:

是的,我有用户创build(以便我可以运行docker没有sudo),并且是UID 1000 GID 1000。
但是我的卷映射是不正确的 – 我已经将卷映射到kibana上不存在的文件夹,configuration文件指向这个文件夹。