Mon fichier Docker est 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
cela fonctionne bien avec un Synology DS218 + Disk Station (Intel)
J'ai acheté un Qnap TS-131P à tester avec Qnap, mais aussi pour confirmer qu'il fonctionne avec un processeur Arm, car Qnap prend en charge les processeurs Docker sur bras, contrairement à Synology.
Lorsque j'essaie de démarrer Container à partir de l'image, un message d'erreur s'affiche.
standard_init_linux.go:185: exec user process caused "exec format error
et ce lien me fait penser que le problème est dû au processeur de bras.
Mais je suis confus, car je pensais que le but de Docker était de cacher ces détails spécifiques au système, comment (puis-je) réparer mon fichier Docker pour qu'il fonctionne sur Qnap.
Le problème était en effet que les fichiers image Docker sont spécifiques à l’architecture (du moins ceux par défaut). Ainsi, un fichier Docker créé sur Intel ne fonctionnera que sur Intel et une compilation de fichier Docker pour Arm32 ne fonctionnera que pour Arm32.
Il semble qu'il existe des moyens de créer une version Arm sur un périphérique Intel, mais cela vous laisserait toujours avec la distribution de deux images distinctes. Et si vous avez un périphérique Arm physique, il est beaucoup plus facile de créer une image Arm directement sur un périphérique Arm.
Vous devez également vous assurer que votre image de base prend en charge votre architecture, mais celle-ci officielle étant désormais conçue en tant qu’images multi-arch, ce n’est donc généralement pas un problème.