Grafana: Docker:ARM映像自v6.4.x起不起作用

创建于 2019-10-02  ·  39评论  ·  资料来源: grafana/grafana

发生了什么事
Docker中的Grafana 6.4.X ARM在Raspbian Buster上不起作用。
尝试运行容器时出现错误消息:
/run.sh:第80行:/ usr / share / grafana / bin / grafana-server:没有此类文件或目录

您预期会发生什么
显而易见:Grafana运行没有错误。

如何复制它(尽可能少且精确)
泊坞窗运行grafana / grafana

我们还有什么需要知道的吗?
错误是由lib-c不匹配引起的:Grafana是使用ld-linux-armhf.so构建的,但是Alpine基本映像仅包含ld-musl-armv7.so。

环境

  • Grafana版本:6.4.X
  • 数据源类型和版本:InfluxDB
  • OS Grafana安装在:Raspbian Buster与Docker
  • 用户操作系统和浏览器:Windows / Firefox
  • Grafana插件:无
  • 其他:无
aredocker typbug

最有用的评论

谢谢大家我们已经将其合并到母版中,但是决定将此修复程序包含在Grafana v6.5.0中,并将在几周内发布。 在此之前,如果要使用grafana/grafana:master标签运行Grafana v6.5之前的ARM兼容Grafana码头工人映像,则可以使用每夜构建。

所有39条评论

感谢您报告此@theWaldschrat,我们将对其进行进一步调查

@theWaldschrat您正在使用什么设备? 是32位或64位体系结构(armv6m,armv7,armv8等)吗?

也许我们需要在Grafana docker映像中包含https://pkgs.alpinelinux.org/package/edge/main/armhf/libc6-compat

apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main libc6-compat

@theWaldschrat您可以确认以上解决了难题吗? 我们很难在没有访问实际ARM设备的情况下进行验证。基于Docker的手臂映像可能是可行的,但是如果您能在这里为我们提供帮助,请多谢。 谢谢

该设备是Raspberry Pi 4B。 从技术上讲,它是ARM64v8,但是Raspbian默认运行32位内核和用户区,因此ARM32v7。

uname -a
主机操作系统:
Linux raspberrypi 4.19.66-v7l+ #1253 SMP Thu Aug 15 12:02:08 BST 2019 armv7l GNU/Linux
Grafana 6.3.6图片:
Linux 97f0bb9a456d 4.19.66-v7l+ #1253 SMP Thu Aug 15 12:02:08 BST 2019 armv7l armv7l armv7l GNU/Linux
Grafana 6.4.X(最新)图片:
Linux 84a01cb75816 4.19.66-v7l+ #1253 SMP Thu Aug 15 12:02:08 BST 2019 armv7l Linux

我还没有建立很多Docker映像,所以我无法在新映像中尝试上述命令,至少不能很快。 但是我做了什么:使用入口点bash和用户root运行grafana:latest容器:
docker run -it -p 3001:3000 --entrypoint="bash" --user=root grafana/grafana
结果如下:

  • 手动运行/run.sh会给出相同的错误消息,因此已得到确认。
  • 运行以上命令:无错误。
  • 再次运行/run.sh:新错误消息:
Error relocating /usr/share/grafana/bin/grafana-server: __memset_chk: symbol not found
Error relocating /usr/share/grafana/bin/grafana-server: __memcpy_chk: symbol not found
Error relocating /usr/share/grafana/bin/grafana-server: __vfprintf_chk: symbol not found
Error relocating /usr/share/grafana/bin/grafana-server: __fprintf_chk: symbol not found
  • 运行ldd /usr/share/grafana/bin/grafana-server不再抱怨缺少库,但是给出与上面相同的结果。

我不是专家,但是我想lib-c仍然不兼容。

@theWaldschrat谢谢您的帮助。

只是为了验证一些其他事项,您可以专门尝试以下步骤以验证是否遇到相同的问题:
docker run -it -p 3001:3000 --entrypoint="bash" --user=root grafana/grafana-arm32v7-linux:6.4.1

docker run -it -p 3001:3000 --entrypoint="bash" --user=root grafana/grafana-arm32v7-linux:6.4.0-beta1

可以肯定的是,您是否还可以尝试运行并启动grafana-server:
docker run -it -p 3001:3000 --entrypoint="bash" --user=root grafana/grafana-arm64v8-linux:6.4.1

前两个都与前面所述相同。
运行/run.sh或直接运行/usr/share/grafana/bin/grafana-server都没有什么不同。

第三个甚至不是以拱形不匹配开始的:
standard_init_linux.go:211: exec user process caused "exec format error"

我遇到了同样的问题,不得不降级到6.3.6 ,因此似乎所有基于Alpine的6.4.x映像都被ARMv7破坏了。

谢谢。 输入bash之后,您可以尝试使用apk add安装musl-dev packade吗?

musl-dev对我来说可以很好地安装,但无论是否带有libc6-compat ,都不会对问题产生影响。

https://github.com/armhf-docker-library/alpine-pkg-glibc/releases安装glibc apk可以启动grafana-server 。 如果我正确理解了该问题,则最好将二进制文件与musl静态链接。

Alpine的想法是静态链接到musl而不是动态glibc链接。 它更快,更小,更稳定并且可能更安全。 至少他们是这样说的。
但是据我所知,Grafana是在与glibc链接的目标映像之外构建的,因此最好是如上所述安装glibc或使用已经包含glibc的其他基本映像,这是最好的主意。

考虑到此更改有效地破坏了ARM设备的docker映像,我期望有比“需求调查”标记更好的东西。

叹! 我猜是“敏捷开发”的诅咒。

我可以在OS X中重现该错误,即使它看起来与您的有所不同:

$ docker run --platform arm grafana/grafana
/lib/ld-linux-armhf.so.3: No such file or directory

我将查看是否可以修复它。

我可能在此问题的根本原因上有领先优势,希望我能在明天之前解决它。

通过构建除glibc之外的musl二进制文件来解决此问题。

刚好碰到这个。 我的系统是aarch64(RockPro64),并且出现了相同的错误:

/run.sh: line 80: /usr/share/grafana/bin/grafana-server: No such file or directory

基于#19798中的工作,我们已将名为dev-musl的标签推送到grafana docker hub存储库中。 我们仅能使用仿真来测试运行arm和arm64码头工人映像,因此我们请任何人帮助测试arm和arm64码头工人映像,以验证它们是否按预期工作。 没有清单被推送到grafana / grafana,因此,如果您想尝试使用arm或arm64,则必须手动指定正确的存储库,请参见下文。

linux / amd64
docker run <args> grafana/grafana:dev-musl

linux / arm64
docker run <args> grafana/grafana-arm64v8-linux:dev-musl

的Linux /手臂
docker run <args> grafana/grafana-arm32v7-linux:dev-musl

请注意,这些图像基于Grafana的当前开发人员分支(master / Grafana v6.5.0-pre),因此,如果要使用现有Grafana安装进行测试,请记住备份现有数据

测试范围:

  • 确认容器可以成功运行,并且使用docker logs <image name>不应输出任何意外内容,例如错误。
  • 如果可能,请尝试添加/连接到数据源并渲染仪表板/面板
  • 可选:确认您可以下载/安装插件
  • 通过评论告诉您使用了哪个设备/体系结构以及结果来提供有关此问题或PR#19798的反馈。

提前致谢

$ uname -a
Linux black-pearl 4.14.70-hypriotos-v7+ #1 SMP Sat Sep 22 05:54:18 UTC 2018 armv7l GNU/Linux

在Raspberry 3B上运行的LGTM

  • [x]确认容器可以成功运行并使用docker日志不应输出任何意外内容,例如错误。
  • [x]如果可能,请尝试添加/连接到数据源并呈现仪表板/面板
  • [x]可选:确认您可以下载/安装插件

SBC:Cubietruck(又名CubieBoard 3)

$ uname -a
Linux fernia 4.19.62-sunxi#5.92 SMP Wed Jul 31 22:07:23 CEST 2019 armv7l armv7l armv7l GNU / Linux

LGTM

  • [x]确认容器可以成功运行,并且使用docker日志不应输出任何意外内容,例如错误。
  • [x]如果可能,请尝试添加/连接到数据源并呈现仪表板/面板
  • [x]可选:确认您可以下载/安装插件

非常感谢您的快速回复和帮助。 非常感激。

同意,谢谢您的帮助测试!

星期二,十月22,2019,19:05 Marcus Efraimsson [email protected]
写道:

非常感谢您的快速回复和帮助。 非常感激。


您收到此邮件是因为您已被分配。
直接回复此电子邮件,在GitHub上查看
https://github.com/grafana/grafana/issues/19585吗?
或退订
https://github.com/notifications/unsubscribe-auth/AACEVV3OBIAWAV3ZNAP4XEDQP4XHPANCNFSM4I42J4CA

uname -a
Linux raspberrypi4 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

覆盆子pi 4b

docker -v
Docker version 19.03.4, build 9013bf5
  • [x]确认容器可以成功运行,并且使用docker日志不应输出任何意外内容,例如错误
  • [X]如果可能,尝试添加/连接到数据源并渲染仪表板/面板(带有图形面板的influxdb
  • []可选:确认您可以下载/安装插件

LGTM:树莓派4

$ uname -a
Linux worker-3 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
  • [x]确认容器可以成功运行,并且使用docker日志不应输出任何意外内容,例如错误
  • [x]如果可能,请尝试添加/连接到数据源并呈现仪表板/面板(influxdb,prometheus,loki)
  • [x]确认您可以下载/安装插件(raintank-worldping-app,grafana-kubernetes-app,devopsprodigy-kubegraf-app,grafana-piechart-panel)

LGTM

摇滚芯片rock64

$ uname -a
Linux rock64 4.4.132-1072-rockchip-ayufan-ga1d27dba5a2e #1 SMP Sat Jul 21 20:18:03 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
  • [x]确认容器可以成功运行,并且使用docker日志不应输出任何意外内容,例如错误
  • [x]如果可能,请尝试添加/连接到数据源并呈现仪表板/面板(influxdb,prometheus,loki)
  • []确认您可以下载/安装插件(raintank-worldping-app,grafana-kubernetes-app,devopsprodigy-kubegraf-app,grafana-piechart-panel)

Docker技能水平
菜鸟
格拉法纳技能水平
菜鸟
-uname -a
Linux SwingerPictureServer 4.19.75-v7 +#1270 SMP ...... armv71 GNU / Linux
硬件
树莓派3B
compose.sh文件:
泊坞窗运行\
--name Grafana_test \
-p 3001:3001 \
-e“ GF_SERVER_ROOT_URL = http://:3001“ \
-e“ GF_SECURITY_ADMIN_PASSOWRD =“ \
--mount type = bind,source =“ / home / pi / DockerConf / Grafana / test / config”,target =“ / etc / grafana”:ro \
grafana / grafana-arm32v7- linux:dev-musl

日志文件:
警告:msg =“ phantomJS已弃用,并将在以后的版本中删除...

谢谢大家我们已经将其合并到母版中,但是决定将此修复程序包含在Grafana v6.5.0中,并将在几周内发布。 在此之前,如果要使用grafana/grafana:master标签运行Grafana v6.5之前的ARM兼容Grafana码头工人映像,则可以使用每夜构建。

请在docker hub中添加注释,以便更轻松地发现此问题。 如果您当前正在拉grafana / grafana,则在armhf上仍会显示无效的图像。

只是在评论时要注意grafana / grafana-arm32v7- linux:latest现在对我来说很好用(此图像),因此我取消固定版本👍

@mhansen您可以直接使用基础图像(grafana / grafana:latest),它是multiarch的:)

我目前在ARM群集中使用grafana / grafana:6.5.1@sha256 :befcd84da2c1f3310b23d93ba9eec4a80df4c86c04bd39455623ac632fbcefdd

@theWaldschrat @pedroetb @mhansen @herm @SySfRaMe @ krystian-wojtas @pgolm @gcgarner @JochenLutz @iwittkau @JasonSwindle @ protik77 @ ata4我们可以使用一些帮助来测试各种ARM架构上的新版本(Docker映像和tar存档),也许您可​​以帮个忙? 我们将不胜感激!

有问题的Docker映像

有问题的tar档案

MUSL档案适用于Alpine Linux,GLIBC档案适用于常规Linux发行版:

转速

Docker镜像
grafana / grafana-arm64v8- linux:master-df1d43167af035c6819923ecce135056f37c79c2-new-pipeline在具有内核4.19.97-v8 +和Docker CE 19.03.5的Raspberry Pi 4B上正常工作。

谢谢@volschin!

今天,在运行约24小时(没有模板初始化)后,容器出现了问题。 最近几个月没有发生任何事情。 因此,也许存在稳定性问题。

今天,在运行约24小时(没有模板初始化)后,容器出现了问题。 最近几个月没有发生任何事情。 因此,也许存在稳定性问题。

您到底看到了@volschin是什么问题?

@ aknuds1抱歉,我还没有全面测试新的docker arm映像。 有没有办法使测试自动化?

我没有任何自动方法,对不起@iwittkau。

我不再看到grafana / grafana:最新的是multiarch,只有amd64 / linux。

$ docker run --rm mplatform/mquery grafana/grafana
Image: grafana/grafana
 * Manifest List: No
 * Supports: amd64/linux

我已改用grafana / grafana:大师

我不再看到grafana / grafana:latest是多体系结构,只有amd64 / linux。

$ docker run --rm mplatform/mquery grafana/grafana
Image: grafana/grafana
 * Manifest List: No
 * Supports: amd64/linux

我已经切换到grafana / grafana:master

@mhansen有趣,感谢大家的注意。 我将不得不对此进行检查。

对于它的价值,我现在使用grafana/grafana-arm32v7-linux:latest 。 虽然它安装了6.7.1。

此页面是否有帮助?
0 / 5 - 0 等级