Docker auf RS819: OCRmyPDF Container startet nicht

Status
Für weitere Antworten geschlossen.

mf_2

Benutzer
Mitglied seit
31. Aug 2008
Beiträge
152
Punkte für Reaktionen
4
Punkte
18
Hallo zusammen,

Synology bietet ja kein offizielles Docker-Paket für die RS819 an, aber ich habe Docker & Portainer auf meiner RS819 dennoch zum Laufen bekommen.
Nun wollte ich den Container für OCRmyPDF starten. Das Image ist vorhanden und ich kann den Container starten, aber der stoppt sich direkt selbst wieder und im Log finde ich folgenden Fehler:

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

Leider kenn ich mich mit Docker nicht aus (lebte ich doch bisher immer in dem Glauben, dass das auf meiner RS ohnehin nicht gehen würde), daher weiß ich nicht was diese Meldung bedeutet. Eine Google-Recherche hat auch keine verwertbaren Ergebnisse geliefert. Weiß jemand, wie man die Ursache dieser Meldung beseitigen kann?

Viele Grüße
mf_2
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Synology bietet ja kein offizielles Docker-Paket für die RS819 an, aber ich habe Docker & Portainer auf meiner RS819 dennoch zum Laufen bekommen.
Wie das?

Entweder findest Du ein Image, dass direkt zu deiner CPU-Architektur passt, oder Du "migrierst" eine bestehendes Image (genauer das Dockerfile des Images) auf deine CPU-Architektur. Im Prinzip reicht es vielleicht sogar schon nur das passende Base-OS in einer ARM-Fassung zu verwenden.

Deine CPU müsste die linux/arm64/v8 Architektur haben. Die Base-OS-Images Debian und Ubuntu gibt es schon mal. Zieh dir mal https://raw.githubusercontent.com/jbarlow83/OCRmyPDF/master/.docker/Dockerfile und lass mal ein `docker build -t OCRmyPDF .` laufen. Dann wirst Du schon sehen ob es geht oder nicht.
 
Zuletzt bearbeitet:

mf_2

Benutzer
Mitglied seit
31. Aug 2008
Beiträge
152
Punkte für Reaktionen
4
Punkte
18
Ich habe Google bemüht und dabei folgende Diskussion gefunden:
https://www.reddit.com/r/synology/comments/jztwlr/compiling_docker_on_an_armbased_synology/
Das leitete mich weiter zu:
https://stackoverflow.com/questions/52520008/can-i-install-docker-on-arm8-based-synology-nas
Dort fand ich ein Shellskript:
https://raw.githubusercontent.com/wdmomoxx/catdriver/master/install-docker.sh
(hier die Sourcen, falls der Link nicht mehr geht)
#!/bin/sh
#/bin/wget -O - https://raw.githubusercontent.com/wdmomoxx/catdriver/master/install-docker.sh | /bin/sh
/bin/wget https://raw.githubusercontent.com/wdmomoxx/catdriver/master/catdsm-docker.tgz
tar -xvpzf catdsm-docker.tgz -C /
rm catdsm-docker.tgz
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/opt/etc/init.d/S60dockerd
sudo docker run -d --network=host -v "/run/docker.sock:/var/run/docker.sock" portainer/portainer:linux-arm64

Das habe ich über SSH ausgeführt und dann war es eigentlich schon durch.
Leider konnte ich mich danach nicht mehr am DSM anmelden. Das wurde aber in den Stackoverflow-Kommentaren auch schon angemerkt. Dort wird auch beschrieben wie man diesen Fehler behebt.

Dann habe ich diesen Artikel gelesen und die Schritte 5 bis 9 ausgeführt:
https://github.com/xtianfall/docker_SynologyNAS
In Schritt 9 konnte ich mich erstmalig an der Weboberfläche anmelden.
Die Sache mit HomeBridge habe ich weggelassen. Das hat glaube ich nicht unmittelbar was mit Docker zu tun sondern eher mit Smart Home.
 
  • Like
Reaktionen: haydibe

grokit

Benutzer
Mitglied seit
18. Okt 2010
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

Synology bietet ja kein offizielles Docker-Paket für die RS819 an, aber ich habe Docker & Portainer auf meiner RS819 dennoch zum Laufen bekommen.
Nun wollte ich den Container für OCRmyPDF starten. Das Image ist vorhanden und ich kann den Container starten, aber der stoppt sich direkt selbst wieder und im Log finde ich folgenden Fehler:

Wenn es das jbarlow83/ocrmypdf image ist, dann ist das vielleicht nicht so geeignet um Docker zu testen. Dieses Docker Image führt ohne Konfiguration prinzipiell nur einmal ocrmypdf aus und stoppt dann wieder:

https://ocrmypdf.readthedocs.io/en/latest/docker.html#using-the-docker-image-on-the-command-line
"Unlike typical Docker containers, in this section the OCRmyPDF Docker container is emphemeral – it runs for one OCR job and terminates, just like a command line program."

Anderseits findest du hier ein Beispiel um den Docker Container so zu starten dass er einen Ordner überwacht und jede Datei die er da findet konvertiert und in einen anderen Ordner wieder ausgibt.

Ich bin übrigens auf der Suche nach einer ocrmypdf Implementierung die ich über einen Weblink mit einem Dokument als Übergabeparameter aufrufen kann und mir dann das OCR verarbeitete PDF zurück gibt. Vielleicht mit REST API? Bis jetzt habe ich nichts schlaues gefunden und ich bin wirklich kein Programmierer..

Dan
 
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Ich bin übrigens auf der Suche nach einer ocrmypdf Implementierung die ich über einen Weblink mit einem Dokument als Übergabeparameter aufrufen kann und mir dann das OCR verarbeitete PDF zurück gibt.
Schon mal https://ocrmypdf.readthedocs.io/en/latest/docker.html#using-the-ocrmypdf-web-service-wrapper angesehen?

Kann man mit docker run --entrypoint python3 -p 5555:5000 jbarlow83/ocrmypdf webservice.py (Hostseitig Port 5555 weil 5000 bereits durch die DSM-UI belegt ist). starten und dann mit dem Browser http://{deine ds ip}:5555 erreichen. Dort kann man dann die CLI-Parameter für OCRmyPDF mitgeben, eine Datei via Filepicker auswählen und dann hochladen.

Die UI selbst ist eigentlich für Debugging gedacht, Du kannst Dir da aber abschauen wie die Schnittstelle zu nutzen ist. Der Service Wrapper ist insgesamt nicht für produktiven Einsatz gedacht, weil es keine Authentifizierung gibt und nur ein Aufruf zur Zeit stattfinden kann.
 

grokit

Benutzer
Mitglied seit
18. Okt 2010
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Ja, hatte ich gesehen und auch schon ausprobiert. Das "abschauen" ist mein Problem.
Da ich nicht wirklich ein Programmierer bin weiss ich nicht genau wie ich das in einen POST request verwandeln soll, so dass ich einerseits damit eine PDF Datei senden kann und anderseits die konvertierte Datei zurückerhalte. Und das alles nicht in einem Browserfenster.
Wie würde das gehen?
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.117
Punkte für Reaktionen
256
Punkte
129

Offiziell gibt es keine Synology Docker App für die RS819: siehe hier
Das war wohl gemeint.

Dass dann Docker selbst nachinstalliert wird und dann zB. via docker-compose Container gestartet werden, ist ja dann quasi einfach "docker" und wird mit den richtigen Images auch klappen, aber die Synology App und das UI fehlt.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Die Antwort hat schon zu meiner Frage gepasst :) So können betroffene User durch ein Workaround doch noch Docker auf Ihren Arm-Kisten einsetzen. Die Syno-UI ist Fluch und Segen zu gleich: sie ist schön anzusehen, schränkt den Benutzer aber unnötig stark ein.
 
  • Like
Reaktionen: mf_2 und tproko

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.117
Punkte für Reaktionen
256
Punkte
129
schränkt den Benutzer aber unnötig stark ein.

Definitiv. In der Arbeit nutzen wir entweder openshift (interne cloud server) oder wo noch nicht im Cloud Modus docker-compose.

Das Syno UI sieht zwar net aus, aber ein einfaches Version aktualisieren geht ja dort leider gar nicht, wie ich lernen musste.
Aber vielleicht bauen sie das ja mal dazu. Im docker-compose einfach die Version erhöhen und fertig. Bei Synology UI nur als "Hack", das Container JSON exportieren, Version im File ändern, und wieder neu importieren...

Also es spricht definitiv einiges auch für docker-compose auf der Syno (y)
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Selbst die Docker-Engine unter der Haube ist nicht koscher. Ich hab ja immer noch die Hoffnung das sie nach dem Wegfall von DDSM endlich ihre Modifikationen zurückrollen und auf ein vanila Docker zurückgehen. Die Binaries gegen die Generischen austauschen hilft da leider genausowenig wie selbst zu kompilieren - bei der offiziellen Docker-Toolchain landen die Syno-Cross-Compilier einstellungen leider nicht im Build-Container. Been there, done that and failed learned;)
 
  • Haha
Reaktionen: tproko

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Ich bastel das nach nach Feierabend mal zurecht. Im prinzip ist es ja nur ein html-formular. Das kann man problemlos auf Curl-Parameter überführen. Der einzige Vorteil ist dann aber eigentlich nur, dass man jetzt auch in der Lage ist von einem entfernten Rechner im LAN die PDF-Konvertierung anzustoßen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Glatt vergessen die Curl-Zeile zu pasten. Im Endeffekt kann man wohl mit params die Parameter übergeben (oder den Parameter auch einfach weglassen). file ist die Datei die hochgeladen werden soll - durch das @ weiss curl das es sich um eine Datei handelt:
Code:
 curl -X POST -F 'params=' -F 'file=@/voller/pfad/zum.pdf' http://{hostname oder ip der ds}:5555
 

synfor

Benutzer
Sehr erfahren
Mitglied seit
22. Dez 2017
Beiträge
9.033
Punkte für Reaktionen
1.615
Punkte
308
Ist da nicht einmal -F zu viel?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Jein: es ist das "Gegenstück" zum freien Textfeld der Seite. Wenn Du keine OCRmyPDF Parameter übergeben willst, dann lass -F 'params=' weg.

Je zu übergebenden Form Parameter wird -F '{erwarteter Name im forumular}=Wert' angegeben.
Man kann die erwarteten Namen im Browser selbst ermitteln, in dem man sich die "name" Attribute der Input-Tags innerhalb des Form-Tags raussucht. Im Fall von der OCRmyPDF ui eben "params" und "file".
 
Zuletzt bearbeitet:

synfor

Benutzer
Sehr erfahren
Mitglied seit
22. Dez 2017
Beiträge
9.033
Punkte für Reaktionen
1.615
Punkte
308
Alles klar. Danke
 

mf_2

Benutzer
Mitglied seit
31. Aug 2008
Beiträge
152
Punkte für Reaktionen
4
Punkte
18
Nun habe ich mittlerweile auf DSM7 aktualisiert und das hat mir mein docker/portainer Setup auf der RS819 geschreddert.
Ich habe nun docker nach stundenlanger Suche mittels folgender Anleitung installieren können:
https://wiki.servarr.com/docker-arm-synology

Nun wollte ich portainer wie folgt starten:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Der Container wird zwar gestartet, aber anscheinend nicht auf die Ports gemappt. Jedenfalls sehe ich bei "PORTS" via "docker ps" nur Whitespaces:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77cec0c2f649 portainer/portainer-ce:latest "/portainer" 5 seconds ago Up 4 seconds portainer
Auch über https://<SynoIP>:9443 bzw. http://<SynoIP>:8000 ist Portainer nicht zu erreichen.
Wieso werden mir die Ports nicht angezeigt und wie kann ich das beheben? Ich habe schon via Google nach einer Lösung gesucht, finde aber nichts.

Edit: Und nun habe ich doch was gefunden: Laut einer Diskussion (Link: https://github.com/moby/moby/issues/15537) ist es im Host-Mode korrekt, dass "docker ps" keine Ports anzeigt. Bleibt dennoch das Problem, dass ich Portainer auf den Ports nicht erreiche. Wie kann ich das lösen?

Edit #2: Nun klappt es - zumindest auf Port 9443 mit https. Folgendes Run-Kommando half:
docker run -d --network=host --name="Portainer" --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Vllt. hilft es ja noch anderen mit demselben Problem.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat