【问题标题】:Can not run metricbeat in docker无法在 docker 中运行 metricbeat
【发布时间】:2018-02-26 00:41:33
【问题描述】:

我正在尝试在 Windows 机器中使用 docker 运行 metricbeat,我已根据我的要求更改了 metricbeat.yml。

docker run -v /c/Users/someuser/docker/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml docker.elastic.co/beats/metricbeat:5.6.0

但得到这些错误

metricbeat2017/09/17 10:13:19.285547 beat.go:346:CRIT 退出:错误 加载配置文件:配置文件(“metricbeat.yml”)只能是 所有者可写,但权限为“-rwxrwxrwx”(修复 权限使用:'chmod go-w /usr/share/metricbeat/metricbeat.yml') 退出:加载配置文件时出错:配置文件(“metricbeat.yml”)只能由所有者写入,但权限为“-rwxrwxrwx” (修复权限使用:'chmod go-w / usr/share/metricbeat/metricbeat.yml')

为什么我会得到这个?

在 docker 容器中永久更改文件内容的正确方法是什么(因为我不想每次容器启动时都更改配置文件)

编辑: 容器不是用来编辑/更改的。如有必要,可以使用 docker 卷管理来外部化所有与配置相关的工作。谢谢

【问题讨论】:

  • 尝试运行这个docker run -v /c/Users/someuser/docker/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml docker.elastic.co/beats/metricbeat:5.6.0 chmod go-w / usr/share/metricbeat/metricbeat.yml 然后你的命令,看看它是否有帮助。如果它没有帮助,那么可能是因为最初的文件或 windows 和 windows 上的文件没有这样的权限。因此,即使您进行了更改,它也不会被持久化
  • 命令不起作用。幸运的是,我已经设法通过在虚拟机中创建一个新文件来启动 metricbeat 容器,命令是 docker run -v /home/docker/metricbeat/metricbeat.yml:/usr/share/metricbea‌​t/metricbeat.yml --命名 metricbeat docker.elastic.co/beats/metricbeat:5.6.0 而不是访问 Windows 位置。必须有更好的方法来做到这一点。

标签: docker elasticsearch elastic-stack metricbeat


【解决方案1】:

所以我认为你可以在这里做 2 个选项。

首先是您可以确保文件具有适当的权限:

chmod 644 metricbeat.yml

或者您可以使用 -strict.perms=false 运行您的 docker 命令,这表明 metricbeat 不应该关心 metricbeat.yml 文件的权限。

docker run \
  docker.elastic.co/beats/metricbeat:5.6.0 \
  --volume="/c/Users/someuser/docker/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml" \
  -strict.perms=false

您可以在以下链接中查看有关该标志的更多文档: https://www.elastic.co/guide/en/beats/metricbeat/current/command-line-options.html#global-flags

【讨论】:

  • 对于带有配置副本的 Dockerfile,在副本后添加以下行:RUN chmod 644 /usr/share/metricbeat/metricbeat.yml
猜你喜欢
  • 2020-08-16
  • 2021-11-15
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多