Ошибка Docker standard_init_linux.go: 185: пользовательский процесс exec вызвал "ошибка формата exec с Qnap TS131P - PullRequest
0 голосов
/ 11 октября 2018

Мой файл Docker - это song / songkong при https://hub.docker.com/r/songkong/songkong/~/dockerfile/

FROM openjdk:8-jre-alpine

RUN apk --no-cache add \
      ca-certificates \
      curl \
      fontconfig \
      msttcorefonts-installer \
      tini \
 && update-ms-fonts \
 && fc-cache -f

RUN mkdir -p /opt \
 && curl http://www.jthink.net/songkong/downloads/current/songkong-linux-headless-novm.tgz?val=77 | tar -C /opt -xzf - \
&& find /opt/songkong -perm /u+x -type f -print0 | xargs -0 chmod a+x

RUN addgroup -S songkong \
 && adduser -S -G songkong songkong

USER songkong:songkong

EXPOSE 4567

ENTRYPOINT ["/sbin/tini"]

# Config, License, Logs, Reports and Internal Database
VOLUME /songkong

# Music folder should be mounted here
VOLUME /music

WORKDIR /opt/songkong

CMD /opt/songkong/songkongremote8.sh

, он отлично работает с Synology DS218 + Disk Station (Intel)

Я купил Qnap TS-131P для тестированияс Qnap, но также для подтверждения того, что он работает с процессором Arm, так как Qnap поддерживает Docker на процессорах Arm, тогда как Synology - нет.

Когда я пытаюсь запустить Container из образа, я получаю ошибку

standard_init_linux.go:185: exec user process caused "exec format error 

и эта ссылка заставляет меня думать, что проблема связана с процессором arm.

Но я запутался, поскольку думал, что весь смысл Docker заключался в том, чтобы скрыть эти специфичные для системы деталиКак (я могу) исправить мой файл Docker, чтобы он работал на Qnap.

1 Ответ

0 голосов
/ 13 октября 2018

Проблема была в том, что файлы образов Docker специфичны для архитектуры (по крайней мере, по умолчанию).Таким образом, файл Docker, созданный на Intel, будет работать только на Intel, а сборка файла Docker для Arm32 будет работать только на Arm32.

Кажется, что есть способы построить сборку Arm на устройстве Intel, но это все равнооставить вас с распространением двух отдельных изображений.И если у вас есть физическое устройство Arm, гораздо проще создать образ Arm непосредственно на устройстве Arm.

Вам также необходимо убедиться, что ваш базовый образ поддерживает вашу архитектуру, но официальное изображение уже создано.как многоархитивные изображения, так что обычно это не проблема.

...