Logging 停靠Kibana外部化日志

Logging 停靠Kibana外部化日志,logging,docker,kibana,Logging,Docker,Kibana,我一直在尝试将kibana日志外部化,这是在docker容器中运行的,没有运气。我的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 但是,当

我一直在尝试将kibana日志外部化,这是在docker容器中运行的,没有运气。我的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上运行它,仅供参考)。我将主机上文件夹的权限设置为7777。有什么想法吗?谢谢

kibana进程由运行

如图所示

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

如果在主机上创建id为1000的用户,则可以根据需要授予该用户对主机目录的权限

检查Dockerfile创建的用户sinatra的id,并查看是否可以在主机上授予对该id的访问权限

如果您
chmod+777
,请重试
docker-compose-up
。(这是为其他人做的)

解释了chmod 777无效的原因:

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


我自己愚蠢的受害者。是的,我创建了用户(这样我就可以在没有sudo的情况下运行docker),用户UID 1000 GID 1000。但是,我的卷映射不正确-我已将卷映射到kibana上不存在的文件夹,配置文件指向此文件夹。是的,您提出了一个有效的观点,但错误太普遍了。@sharman感谢您的反馈。我已将您的评论包含在答案中,以提高可视性。