Container startet nicht - Anfänger braucht Hilfe

  • Hallo,


    nach diversen anderen Theman wollte ich mich jetzt mal der Docker-Geschichte widmen.

    Habe nach der QNap Anleitung einen Docker für Handbrake aus den fertigen Docker-Repository ausgewählt und nach Anleitung installiert.

    Hat auch alles geklappt soweit, komme auf die Oberfläche.


    Nur ich kan den Docker nicht starten. Immer wenn ich auf den Play-Button klicke fängt das NAS an zu rödeln und bricht dann mit einer Fehlermeldung ab.

    Da ich gerade auf der Arbeit bin, kann ich nicht nachschauen, aber es war irgend was mit "exec ....". Konnte also offenbar etwas nicht ausgeführt werden.


    Welche Angaben oder Screenshots werden benötigt um da eine Hilfestellung zu liefern?

  • Welche Angaben oder Screenshots werden benötigt um da eine Hilfestellung zu liefern?

    Naja zunächst mal wären die Angaben der genauen Fehlermeldung sowie des verwendeten Containers hilfreich. Wenn du das Ganze auf deiner TS-431 laufen lässt, gehe ich mal stark davon aus, dass du versuchst einen 64Bit Container auf deinem ARM Gerät laufen zu lassen, was sehr oft entsprechende exec ... Fehler verursacht. In dem Fall kann dir hier im Forum vermutlich nicht wirklich jemand weiterhelfen, da du dann ein anderes NAS (mit 64Bit CPU) benötigst um entsprechende Container laufen zu lassen.

  • OK, Fehlermeldung liefer ich heute Abend gerne nach.

    Gibt es eine Möglichkeit zu erkennen ob es sich um einen 64Bit oder 32Bit Container handelt? Aus der Benennung nicht, aber für Handbrake gab es da unzählige. Die alle einzelnd durchzuprobieren kann ja nicht das Ziel sein, oder?


    Worauf muss ich achten?

  • 64Bit oder 32Bit Container

    Die Zielarchitektur ist eben in deinem Fall weder 64Bit, noch 32Bit sondern ARM. Ob es einen "einfachen" Weg gibt die Images zu erkennen kann ich dir nicht sagen. Ich weiß nur, dass vermutlich so gut wie alle Images standardmäßig immer für 64Bit gebaut werden, weil Docker eigentlich eine Technologie ist, die sich auf Server bezieht und die sind nunmal (noch) zum größten Teil mit 64Bit Architekturen ausgestattet. Was du natürlich versuchen könntest, wäre den Container auf deinem NAS selbst zu bauen. Dafür müsstest du dann das entsprechende Dockerfile anlegen (oder herunterladen) dich per SSH auf dem NAS einwählen und in das Verzeichnis mit dem Dockerfile navigieren und dann den Befehl docker build . aufrufen. Dann besorgt er sich die notwendigen Basis Layer und führt die im Dockerfile angegebenen Schritte aus. Ob das immer "einfach so" für ARM klappt, keine Ahnung. Alternativ ist es wohl mit Hilfe von docker buildx wohl auch möglich auf einem anderen Gerät Docker Images für verschiedene Architekturen zu bauen.


    Wenn es dir allerdings um Handbrake geht, was ja eine grafische Anwendung ist, würde ich dir so oder so eher zur Linux Station raten. Damit könntest du dann einfach Handbrake installieren und per VNC fernsteuern. Generell ist es sonst nämlich eher schwierig grafische Anwendungen in einem Docker Container zu betreiben (wenn auch nicht unmöglich).

  • Du kannst auf hub.docker.com nach deinem Image suchen und dann dort überprüfen ob es diesen Container für die ARM Architektur gibt. Evtl. musst du dann beim pullen den entsprechenden Tag angeben.

  • @Azrael783

    Hab ich mal geschaut für Handbrake gibt es für ARM nichts, dafür aber für Calibre.

    Muss ich das dann runterladen und das File manull in der Containerstation importieren?


    @tuxflo

    Bitte Begriffsklärung

    Dockerfile = Was genau ist das? Wie geschrieben bin ich Anfänger auf dem Gebiet

    docker build . = am Ende ist ein Leerzeichen gefolgt von einem Punkt? Ist das Richtig?

    Basis Layer = Was genau ist das?

    Dann besorgt er sich die notwendigen Basis Layer und führt die im Dockerfile angegebenen Schritte aus.

    Könntest du das etwas weiter ausführen? Ist das Dockerfile lediglich ein Script?


    Werde mir das mit der Linux-Station aber mal anschauen, klingt nach der besseren Alternative


    Mal eine grundsätzliche Frage bezüglich der ARM-Architektur. Ich bin eigentlich bisher davon ausgegangen, dass die ARM-Prozessoren quasie indirekt die Weiterentwicklung zum 64Bit-System ist. Nach etwas Lesen diesbezüglich habe ich mich da offenbar geirrt. Wie und Wo ist die ARM-Architektur einzuordnen in Bezug auf 32 und 64Bit-Prozessoren? Läuft das komplett parallel?

    Einmal editiert, zuletzt von MarkoP ()

  • Wie und Wo ist die ARM-Architektur einzuordnen in Bezug auf 32 und 64Bit-Prozessoren? Läuft das komplett parallel?

    Ähm, eher so wie VW Polo mit Porsche und Lamborghini zu vergleichen. ;)

    Wobei der Polo der ARM wäre und der Lambi der 64Bit (meist Intel, vermehrt auch AMD)

  • Muss ich das dann runterladen und das File manull in der Containerstation importieren?

    Wie es in der Containerstation funktioniert kann ich erst heute Abend ausprobieren. Wenn du dich per SSH ins NAS einloggst lädst du das Image mit:


    docker pull portainer/portainer:linux-arm runter. Wobei alles hinter dem Doppelpunkt die Version angibt. Normalerweise steht dort latest. In meinem Beispiel zieht er dann ein Linux based Image für die ARM Architektur.

    Zu deinen anderen Fragen kann ich dir die Doku von Docker ans Herz legen, oder du kaufst dir ein Buch. In kürze: Per Dockerfile kannst du dir deine eigene Anwendung bauen. In etwa so:


    • nimm Ubuntu 18.04 LTS als Betriebssystem
    • führe ein Update aus
    • Installiere verschieden Programme (z. b. nextcloud, wordpress, apache, etc.)
    • starte die Anwendung

    Per docker build . werden dann die oben genannten Schritte ausgeführt. Und ja da ist ein Leerzeichen vor dem Punkt! Dann hast du dir praktisch dein eigenes Image gebaut und kannst das dann per docker run my_awesome_image  ausführen. Wie gesagt guck dir die Doku an, installiere dir eine VM auf deinem Windows Rechner, installiere eine beliebige Linux Distrubution und Docker und probiere es aus. Da kannst du auf jeden Fall nichts kaputt machen ;)

  • Mal eine grundsätzliche Frage bezüglich der ARM-Architektur

    Es ist einfach die Art und Weise wie die CPU mit den Daten umgeht. Da geht es weniger um "das ist der Nachfolger" sondern mehr um bestimmte Leistungseigenschaften die man versucht mit unterschiedlichen Architekturen abzubilden. In der Regel sind ARM Prozessoren deutlich sparsamer im Energieverbrauch, was z.B. auch der Grund ist, warum man diese Architektur vermehrt auf mobilen Geräten wie Smartphones oder eben auch im embedded Bereich wie dein NAS oder auch ein Raspberry Pi einsetzt. Grundsätzlich sind heute gängige Architekturen in die vier Kategorien

    • amd64 (klassische 64 Bit Architektur)
    • i386 (klassische 32 Bit Architektur)
    • ARM und
    • ARM 64

    einteilbar. Wobei es streng genommen bei ARM auch noch unterschiedliche Ausprägungen gibt (z.B. im Bezug darauf wie mit Gleitkommazahlen umgegangen wird).


    Hinsichtlich der anderen Fragen kann ich mich Azrael783 nur anschließen: schau dir mal ein Docker Einführungsvideo an und befass dich (mindestens auszugsweise) mit der Docker Dokumentation. Es ist insbesondere wichtig, dass du dir den Unterschied zwischen Containern und Images anschaust, denn das hilft dir Docker als Gesamtkonzept besser zu verstehen.

  • docker pull portainer/portainer:linux-arm runter. Wobei alles hinter dem Doppelpunkt die Version angibt. Normalerweise steht dort latest. In meinem Beispiel zieht er dann ein Linux based Image für die ARM Architektur.

    So, ich habe es jetzt mal mit einem Calibre-Server probiert und hat soweit funktioniert,

    Bis auf eine Kleinigkeit. Er sucht nach der Bibliothek unter /opt/calibre/library. Da ist aber keine Bibliothek.

    Jetzt ergeben sich zwei Fragen für mich:

    1) Wie komme ich überhaupt an den Speicherort /opt/calibre/library ?

    2) Wie kann ich dem Container sagen, dass er die Bibliothek an einem anderen Ort suchen soll, der auch vom PC aus zugänglich ist um mit der Windows-Anwendung von Calibre die Bibliothek pflegen zu können.


    @tuxflo

    Wie und wo finde ich diese Linux Station denn? Im AppCenter finde ich nichts oder gibt es die auch wieder nur für 32 bzw 64Bit-NAS?


    @all

    Danke für die Tips, die Doku werde ich mir am Wochenende mal ansehen.


    Was das ARM angeht, habe ich mich da wohl verkauft. Nachdem in letzter Zeit immer mehr Geräte mit ARM-Strukturen auftauchen speziell auch Multimediaboxen dachte ich eher das es Leistungsstärker wäre als klassische 32/64Bit-Systeme.

  • Was das ARM angeht, habe ich mich da wohl verkauft.

    Da muss ich dir leider recht geben. Ich habe auch deine anderen Posts bezüglich Webserver gelesen und dachte mir da schon, dass du mit dem "kleinen" TS-431x2 wahrscheinlich irgendwann an deine Grenzen stoßen wirst. Ich wollte mir ein NAS eigentlich als Datengrab anschaffen, aber als ich mich dann damit auseinander gesetzt habe und mal geschaut habe was es alles gibt, habe ich mich letzendlich doch zu einem NAS mit Intel CPU entschieden. Ich habe zwar auch eins der "kleineren" Geräte, aber immerhin die möglichkeit auf 8GB Ram aufzustocken (habe ich auch gemacht) und sogar VMs drauf laufen zu lassen. Was bei deinem ARM Gerät nicht geht.

    Poste doch mal deine Einstellungen aus der Containerstation. Grundsätzlich ist es so, dass alle Daten - ohne besondere Einstellungen - im Container gespeichert haben. Somit gehen die Daten auch wieder verloren, wenn du den Container löscht. Um die Daten nicht zu verlieren, musst du das gewünschte Verzeichnis nach "außen" sagen wir verlegen (englisch: mappen). Wenn du wieder mit SSH und Konsole arbeitest, geschieht das mit -v /verzeichnis/außerhalb_des_containers:/verzeichnis/innerhalb_des_containers hinter dem docker run[tt] Befehl, sprich in deinem Fall [tt]-v /opt/calibre/lilbrary:/opt/calibre/library. Dazu musst du das Verzeichnis auf dem NAS aber auch genauso anlegen. Mittels Containerstation geht es etwas einfacher. Hier gehst du in die Einstellungen des Containers (wenn er bereits läuft, musst du ihn erst stoppen)


    Container Einstellungen.jpg


    dann gehst du auf "Erweiterte Einstellungen"


    Container Einstellungen 2.jpg


    und kannst jetzt dort unter "Freigabeordner" die Verzeichnisse eintragen, wobei der erste Eintrag sich auf die Verzeichnisse auf deinem NAS bezieht und ein Dropdown Menü ist (sprich hier musst du nichts reintippen).


    Btw: Wenn du einen Container installieren möchtest, fragt dich die Containerstation als erstes nach der Version. Hier kannst du jetzt auch eine Version für ARM auswählen (falls vorhanden).


    Container Einstellungen 3.jpg

  • Bezüglich Linux Station: falls sich die Angaben in deiner Signatur auf 2G Ram beziehen, dann könnte es daran liegen. In der Beschreibung der Linux Station heißt es:

    • Linux Station requires a QNAP NAS with at least 4GB RAM. Supported models include: TS-x51, TS-x51A, TS-x53, TS-x53A, TS-x53B, TS-x53U, TS-x53S, TS-x63, TS-563, TS-x63U, TS-x70, TS-x71, TS-x73, TS-x73U, TS-x77, TS-x79, TS-x80, TS-x82, TS-x82S, TS-x85, TES-x85U, TS-1685, TS-471U-RP.
    • Container Station v1.5.1343 (or newer) needs to be installed on the QNAP NAS.
  • Ne, es liegt einfach daran, dass mein NAS (TS-431x2) nicht mit aufgeführt ist.

    Und wenn ich es richtig sehe (Hab nicht alle kontrolliert, aber einen teil der gelisteten NAS) liegt es wieder einmal an der ARM-Architektur, denn alle anderen haben offenbar eine 32/64Bit-Architektur.


    @Azrael783

    So, hab es endlich mal geschafft weiterzumachen.

    Hab deine Anleitung Schritt für Schritt befolgt. Grundsätzlich gibt es einige Unterschiede zu deiner Anleitung. Der wichtigste ist wohl, dass ich nur beim Erstellen des Containers unter "Erweiterte Einstellungen" etwas verändern kann. Wenn der Container einmal erstellt ist, habe ich keine Editiermöglichkeit mehr.

    Habe es jetzt so wie gesaft umgesetzt:

    Screenshot.jpg

    Leider mit dem gleichen Ergebnis.


    Den Eintrag im obersten Bereich bekomme ich überhaupt nicht editiert. Und die Freigabe wird wohl irgendwie nicht akzeptiert, denn wenn ich versuche den Container zu starten kommt weiter hin die Fehlermeldung
     There is no calibre library at: /opt/calibre/library .

    Hab auch schon Probier beim Einstiegstpunkt stat dem Verzeichnis  /opt/calibre/library  direkt auf das Verzeichnis  /Sync/Calibre-Bibliothek  zu verweisen. Hat auch nichts geändert, dann lautete die Fehlermeldung eben auf dieses Verzeichnis - und in diesem Verzeichnis ist definitiv die Bibliothek abgelegt.


    Vielleicht siehst du ja meinen Fehler.


    Nachtrag:

    Hab den Container jetzt ans Laufen bekommen, anscheinend hatte sich die Bibliothek abgeschossen. Nachdem ich das Original noch mal hinkopiert habe funktionierte es dann. Jetzt kommt der nächste Schritt, augenblicklich ist der Server nicht öffentlich erreichbar. Siehe Screenshot:

    Screenshot2.jpg


    Was muss ich einstellen, damit der Calibre-Server über das Internet von Außen mit meiner DDNS-Adresse erreichbar ist.

    3 Mal editiert, zuletzt von MarkoP ()

  • Was muss ich einstellen, damit der Calibre-Server über das Internet von Außen mit meiner DDNS-Adresse erreichbar ist

    Das kommt jetzt darauf an wie du den Container eingestellt hast. Läuft er mit der Host (NAS) IP Adresse, dann musst du im Router Port 8080 für diese IP Adresse freigeben. Hierbei musst du darauf achten, dass nichts anderes auf Port 8080 läuft, ansonsten funktioniert es nicht.

    Wenn du dem Container eine eigene IP Adresse zugewiesen hast, musst du für diesen den Port im Router weiterleiten, hierbei sollte es hingegen keine Probleme mit den Ports geben.