GitLab (via Docker) on a QNAP NAS with ARM CPU ("exec format error")

2.3k Views Asked by At

I just bought a QNAP TS-832X NAS (Firmware: 4.3.4.0695 Build 20180830).

This machine comes with an ARM CPU (Annapurna Labs Alpine AL324 Quad-core ARM Cortex-A57 CPU @ 1.70GHz).

I bought it only to install GitLab on it, but the official image doesn't seem to work.

When I try to run the image it fails.

[~] # 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"

After googling I figured it might be caused by the host architecture, so I tried running ulm0/gitlab, but with the same result.

I also tried other images with "ARM" in their tags like arm64v8/ubuntu. This one didn't even give any logs.

[~] # 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
[~] #

uname -a

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

docker version

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
1

There are 1 best solutions below

0
On

Sorry to hear about your problem, unfortunately I don't believe there is any official GitLab Docker image for ARM devices.

From personal experience I've found that most developers will make a Docker image for Intel devices but not work on ARM Devices.

This topic has been discussed on the QNAP Forums already:

My QNAP is Intel based, so I can't corroborate your results, but quoting a few sentences from a page about docker on Raspberry Pi:

"Docker-based apps you use have to be packaged specifically for ARM architecture! Docker-based apps packaged for x86/x64 will not work and will result in an error such as: FATA[0003] Error response from daemon: Cannot start container 0f0fa3f8e510e53908e6a459e817d600b9649e621e7dede974d6a65761ad39e5: exec format error Keep this in mind when searching for apps on the Docker Hub - the source for Docker apps/images. If you see the keyword RPI or ARM in the heading or description, this app can usually be used for the Raspberry Pi."

The TS-831X has a "AnnapurnaLabs, an Amazon company Alpine AL-314 Quad-core 1.7 GHz Cortex-A15 processor" CPU, which is an ARM architecture much like the Raspberry Pi..

So, I suspect you may be limited in what Docker images you have access to and unless an official/canonical maintainer of an app also makes an ARM build, you may be stuck with either rolling your own or trusting a 3rd party hobbyist to do so...

I hate to say this but I'd say you should have picked up an Intel one instead.

I have a QNAP TS-251+ (Intel based) with 8GB RAM and 2x8TB in a RAID Configuration and this works perfectly for my Gitlab instance, in addition to running PLEX and using it as a Webserver as well.

I would also suggest when you do finally get it up and running to map the volumes to directories that are easy to access so you can make configuration changes easily.