Andockfenster Fehler standard_init_linux.go:185: exec Benutzer-Prozess verursacht "exec format error mit Qnap TS131P
Meine Docker-Datei ist song/songkong bei 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
funktioniert es einwandfrei mit einer Synology DS218+ Disk Station (Intel)
Kaufte ich eine Qnap TS-131P testen mit Qnap, aber auch, um zu bestätigen, es funktioniert mit Arm-Prozessor, da Qnap unterstützt Docker auf arm-Prozessoren in der Erwägung, dass Synology nicht.
Wenn ich versuche zu starten-Container aus dem Bild bekomme ich eine Fehlermeldung
standard_init_linux.go:185: exec user process caused "exec format error
und dieser link macht mich denke, das problem ist wegen dem arm-Prozessor.
Aber ich bin verwirrt, da ich dachte, der ganze Punkt von Docker war zu verstecken diese system-spezifische details entfernt, wie (kann ich) fix meine Docker-Datei, damit es funktioniert auf Qnap.
- Docker wird nicht magisch machen Sie ein x86-binary in der Lage zu laufen auf ARM. Sie müssen den Neuaufbau einer ARM-Bild.
- okay, aber wie mache ich das, es wird gerade gebaut, mit DockerHub sehe ich keine arm-option, heißt das auch, dass es zwei einzelne Bilder sind und user haben würde, um herauszufinden, welche man zu verwenden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem war ja, dass Docker-image-Dateien sind von der Architektur bestimmten (zumindest die Standardeinstellungen). So ein Docker-Datei gebaut, die auf Intel-funktioniert nur auf Intel-und Andockfenster-Datei erstellen für Arm32 nur für Arm32.
Es scheint, gibt es einige Möglichkeiten, um einen Arm zu bauen, der auf einem Intel-Gerät ist, aber das würde immer noch verlassen Sie mit der Verteilung von zwei separate Bilder. Und wenn Sie eine physische Arm-Gerät ist es viel einfacher zu bauen, ein Arm-image direkt auf einem Arm-Gerät.
Sie müssen auch sicherstellen, dass Ihre Basis-image unterstützt Ihre Architektur, aber die offiziellen haben nun schon gebaut, als multi-arch-Bilder, so ist dies in der Regel kein problem.