Py学习  »  docker

带ARM CPU的Qnap NAS上的Gitlab(通过Docker)(“执行格式错误”)。

Jan J • 4 年前 • 1235 次点击  

我刚买了一个小睡 TS-832X型 NAS(固件:4.3.4.0695内部版本20180830)。

这台机器配有ARM CPU(安纳普纳实验室阿尔卑斯AL324四核ARM Cortex-A57 CPU@1.70GHz)。

我买它只是为了在上面安装Gitlab,但官方形象似乎不起作用。

当我试图运行图像时,它失败了。

[~] # docker run -d --name gitlab-server --hostname build1 -p 10080:10080 -p 10022:22 -p 10443:443 -v /share/GitLab/config:/etc/gitlab -v /share/GitLab/logs:/var/log/gitlab -v /share/GitLab/data:/var/opt/gitlab --restart always gitlab/gitlab-ce:latest
[~] # docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                        PORTS               NAMES
a176158729ad        gitlab/gitlab-ce:latest   "/assets/wrapper"   5 seconds ago       Restarting (1) 1 second ago                       gitlab-server
[~] # docker logs a1
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"
standard_init_linux.go:185: exec user process caused "exec format error"

在谷歌搜索之后,我发现这可能是由主机架构引起的,所以我尝试运行 ulm0/gitlab 但结果相同。

我还试过其他标签上有“手臂”的图片,比如 arm64v8/ubuntu . 这个连日志都没有。

[~] # docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                          PORTS               NAMES
2b2b68bc912c        arm64v8/ubuntu:latest     "/bin/bash"         7 seconds ago       Restarting (0) 1 second ago                         ubuntu-arm
a176158729ad        gitlab/gitlab-ce:latest   "/assets/wrapper"   2 hours ago         Restarting (1) 51 seconds ago                       gitlab-server
[~] # docker logs 2b
[~] #

找到对应内核版本

Linux build1 4.2.8 #2 SMP Thu Aug 30 07:33:01 CST 2018 aarch64 GNU/Linux

Docker版本

Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   a9fd393
 Built:        Fri Aug  3 04:31:20 2018
 OS/Arch:      linux/arm64

Server:
 Version:      17.09.1-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   a9fd393
 Built:        Fri Aug  3 04:31:20 2018
 OS/Arch:      linux/arm64
 Experimental: false
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38084
 
1235 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Popeye
Reply   •   1 楼
Popeye    5 年前

很抱歉听到你的问题,不幸的是我不相信有任何官员 GitLab Docker image 用于ARM设备。

根据个人经验,我发现大多数开发人员会为英特尔设备制作Docker映像,但不会在ARM设备上工作。

本主题已在 QNAP Forums 已经:

我的qnap是基于Intel的,因此我无法证实您的结果,但引用了一页关于Raspberry Pi上Docker的几句话:

“您使用的基于Docker的应用程序必须专门打包用于ARM架构!为x86/x64打包的基于Docker的应用程序将无法工作,并将导致以下错误: 来自守护进程的fata[0003]错误响应:无法启动容器0f0fa3f8e510e53908e6a459e817d60b9649e621e7ede974d6a5761ad39e5:执行格式错误 在Docker Hub(Docker应用程序/图像的来源)上搜索应用程序时,请记住这一点。如果在标题或描述中看到关键字rpi或arm,则此应用程序通常可用于覆盆子pi。”

TS-831X有一个“AnnapurnalAbs,一个亚马逊公司Alpineal-314四核1.7GHz Cortex-A15处理器”CPU,这是一个ARM架构,很像覆盆子PI。

所以,我怀疑你可能在Docker图片中受到限制,除非应用程序的官方/规范维护者也进行了ARM构建,否则你可能会陷入滚动自己或信任第三方爱好者这样做的困境…

我不想这么说,但我想说你应该换一个英特尔的。

我有一个Qnap TS-251+(基于Intel),在RAID配置中有8GB RAM和2x8TB,这对于我的Gitlab实例非常适用,除了运行Plex并将其用作Web服务器之外。

我还建议当您最终启动并运行它时,将卷映射到易于访问的目录,这样您就可以轻松地进行配置更改。