Dockerized Kibana外化日志

时间:2016-01-15 03:59:08

标签: logging docker kibana

我一直在尝试外化在一个没有运气的docker容器中运行的kibana日志。我的码头组成如下:

  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.有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

kibana流程由kibana user (defined in the Dockerfile)ENTRYPOINT "/docker-entrypoint.sh" script运行。

如此similar issue

所示
  

dockerfile创建一个名为sinopia的用户并运行所有内容   一般来说,这是一种很好的做法,但是,访问主机文件系统时,docker在主机上使用与容器上使用的相同的uid 。容器中的root对主机具有root访问权限,容器中id为1000的用户sinopia映射到主机上的用户1000.

     

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

检查Dockerfile创建的用户sinatra的ID,看看是否可以授予对主机上相同ID的访问权限。

如果您chmod +777,请再次尝试docker-compose up。 (这是为其他docker images like libreboard

完成的

OP sharman解释in the comments为什么chmod 777无效:

  

是的我创建了用户(这样我可以运行没有sudo的docker)并且是UID 1000 GID 1000.
  但我的卷映射不正确 - 我已将卷映射到kibana上不存在的文件夹,配置文件指向此文件。