Jump to content

Docker verstehen / lernen


Curtis777

Recommended Posts

Ich hab erst vor kurzem Docker entdeckt und seit dem versuche ich langsam alles in Docker Container zu wandeln.

Jetzt gibt es manche die nicht in den Community Apps vorhanden sind.

Wie z.b. der hier:

https://hub.docker.com/r/nibrev/ant-media-server

Jedoch verstehe ich die config nicht bzw hab irgendwas falsch gemacht, den beim Update ist es passiert das er die gesamten Settings verloren hat.

Daher wollte ich fragen ob mir jemand für dumme erklären kann wie ich am einfachsten herausfinden kann welche ports / Ordner der Docker Container benötigt. Oder wie ich die exakte Config herausfinde...

Am besten mit dem beispiel von meinem container.

 

Danke

Link to comment

Auch wenn es in diesem Video viel um raspberry pi und dessen Installation geht erklärt Dennis hier viel und sehr verständlich.

Auch die Folgevideos sind empfehlenswert.

 

 

Wahrscheinlich kann man nicht alles auf unraid direkt übertragen aber man kommt der Geschichte näher.

 

Edited by MartinG
  • Thanks 1
Link to comment

 

 

18 hours ago, Curtis777 said:

den beim Update ist es passiert das er die gesamten Settings verloren hat.

Die Dokumentation dieses Containers ist mangelhaft. Normalerweise wird alles auf der Docker Hub Seite erklärt. Da steht aber nichts.

 

Auch bei Github steht nichts:

https://github.com/rez0n/docker-ant-media-server

 

Aus dem Quellcode kann man ableiten, dass Nutzerdaten evtl. im Verzeichnis "/usr/local/antmedia" liegen:

https://github.com/rez0n/docker-ant-media-server/blob/master/Dockerfile

 

Daher probiere mal einen "Path" hinzuzufügen. Container Path wäre "/usr/local/antmedia" und Host Path zB "/mnt/user/appdata/antmedia".

 

Sollte der Container dann noch starten, gehst du hin und änderst ein paar Einstellungen, dann löschst du den Container und fügst ihn über Add Container und dem Dropdown wieder mit deinen bestehenden Pfad-Einstellungen neu hinzu. Er wird sich komplett neu installieren und sollte dann aber auf die bestehenden Daten in dem Pfad zurückgreifen. Wenn nicht: Vergiss den Container.

Link to comment
2 hours ago, mgutt said:

 

 

Die Dokumentation dieses Containers ist mangelhaft. Normalerweise wird alles auf der Docker Hub Seite erklärt. Da steht aber nichts.

 

Auch bei Github steht nichts:

https://github.com/rez0n/docker-ant-media-server

 

Aus dem Quellcode kann man ableiten, dass Nutzerdaten evtl. im Verzeichnis "/usr/local/antmedia" liegen:

https://github.com/rez0n/docker-ant-media-server/blob/master/Dockerfile

 

Daher probiere mal einen "Path" hinzuzufügen. Container Path wäre "/usr/local/antmedia" und Host Path zB "/mnt/user/appdata/antmedia".

 

Sollte der Container dann noch starten, gehst du hin und änderst ein paar Einstellungen, dann löschst du den Container und fügst ihn über Add Container und dem Dropdown wieder mit deinen bestehenden Pfad-Einstellungen neu hinzu. Er wird sich komplett neu installieren und sollte dann aber auf die bestehenden Daten in dem Pfad zurückgreifen. Wenn nicht: Vergiss den Container.

Danke dir, dann wirds wohl 

Vergiss den Container.

 

nach dem hinzufügen des Pfades kommt in den Logs nur mehr:

/bin/bash: /usr/local/antmedia/start.sh: No such file or directory

 

Schade das ist die einzige möglichkeit die ich gefunden habe die mich Videos on Demand (VOD) und livestreams in Wordpress einbinden lässt.

und ein anderer ANT-media-server container wirds wohl auch nicht da alle entweder ganz alt oder genauso wenig beschrieben sind....

 

Link to comment
1 minute ago, Curtis777 said:

nach dem hinzufügen des Pfades kommt in den Logs nur mehr:

/bin/bash: /usr/local/antmedia/start.sh: No such file or directory

War der Container wirklich gelöscht? Weil so wie ich das aus dem Quelltext verstehe, existiert der pfad /usr/local/antmedia zu Anfang nicht, sondern alles was in /usr/local/ant-media-server liegt, wird nach /usr/local/antmedia verschoben, also auch die start.sh, die laut deiner Fehlermeldung fehlt:

image.png.43f888aead2ef945db64420d5ab1ee8c.png

 

 

Link to comment
2 hours ago, mgutt said:

War der Container wirklich gelöscht? Weil so wie ich das aus dem Quelltext verstehe, existiert der pfad /usr/local/antmedia zu Anfang nicht, sondern alles was in /usr/local/ant-media-server liegt, wird nach /usr/local/antmedia verschoben, also auch die start.sh, die laut deiner Fehlermeldung fehlt:

image.png.43f888aead2ef945db64420d5ab1ee8c.png

 

 

Jetzt hab ich mal alles gelöscht und neu versucht mit folgenden Settings.

Jedoch wieder der selbe Effekt, siehe Log file.

Ich kann den Container nicht starten ( bleibt auf stop)

Auch der Appdata ordner bleibt leer

 

Screenshot 2022-02-06 011430.png

Screenshot 2022-02-06 011551.png

Link to comment
6 hours ago, mgutt said:

@ich777 Wo ist mein Denkfehler oder wird das chmod ausgeführt bevor der Container den Mount zum Host Path durchführt?

Wenn ihr den Pfad /usr/local/antmedia auf den Host mounted wird das Verzeichnis im Container mit dem vom Host "überschrieben" und wenn in dem Verzeichnis vom Host keine start.sh liegt dann kann die nicht ausgeführt werden.

 

Seid ihr euch sicher das dieser Pfad gemounted gehört? Normalerweise gehören die Pfade nicht gemounted wo die start skripte für den Container drin liegen.

Link to comment
47 minutes ago, ich777 said:

Wenn ihr den Pfad /usr/local/antmedia auf den Host mounted wird das Verzeichnis im Container mit dem vom Host "überschrieben" und wenn in dem Verzeichnis vom Host keine start.sh liegt dann kann die nicht ausgeführt werden

Das ist schon klar. Siehe oben der Screenshot. Die start.sh liegt erst woanders.

 

48 minutes ago, ich777 said:

Seid ihr euch sicher das dieser Pfad gemounted gehört?

Nein. Es gibt ja keine Doku. War nur geraten 

Link to comment

der docker ist nicht wirklich für persistent mode gemacht wenn ich mir das anschaue

 

die server config an sich ist diese /usr/local/antmedia/conf/red5.properties

 

dann käme die server.db, usw usw ...

 

das bekäme man noch über Umwege hin ... was aber kritisch wird sind die Projekte, Apps etc ...

 

ich hab mal zum Test <Test> angelegt, und diese werden in /usr/local/antmedia angelegt, alle separat ... dann noch Teile davon in /usr/local/antmedia/webapps .. usw

 

image.thumb.png.15fd3b0c5c0f9e106a5d16770a32b81b.png

 

da wir /usr/local/antmedia nicht generell mounten können ... wird das ... am Ende immer murks

 

 

  • Like 2
Link to comment
3 hours ago, alturismo said:

der docker ist nicht wirklich für persistent mode gemacht wenn ich mir das anschaue

 

die server config an sich ist diese /usr/local/antmedia/conf/red5.properties

 

dann käme die server.db, usw usw ...

 

das bekäme man noch über Umwege hin ... was aber kritisch wird sind die Projekte, Apps etc ...

 

ich hab mal zum Test <Test> angelegt, und diese werden in /usr/local/antmedia angelegt, alle separat ... dann noch Teile davon in /usr/local/antmedia/webapps .. usw

 

image.thumb.png.15fd3b0c5c0f9e106a5d16770a32b81b.png

 

da wir /usr/local/antmedia nicht generell mounten können ... wird das ... am Ende immer murks

 

 

Ich verstehe nicht ganz, wenn ich tests anlege und videos hochlade für VOD wo wird das hingespeichert?

in den RAM ?

Wäre schön wenn es zumindest eine Abhilfe gibt das man das System zuverlässig zu laufen bekommt ohne bei einem Reboot wieder alles neu einstellen zu müssen.

wenn ich nichts mounte startet er wieder und ich kann drinnen arbeiten.

 

Link to comment
7 hours ago, alturismo said:

die server config an sich ist diese /usr/local/antmedia/conf/red5.properties

 

Ja, aber die ist doch ganz am Anfang, wenn der Container installiert wird noch in /usr/local/ant-media-server oder nicht?

 

@ich777 Hier noch mal der Screenshot. Der Container führt zu Anfang ein "mv" aus. Daher hatte ich gedacht, dass wenn man /usr/local/antmedia mit dem Host verlinkt, dass die start.sh dann auf dem Host landet:

image.png

 

Oder werden die Mounts erst erstellt, wenn diese Befehle durch sind? Mir ist nicht klar zu welchem Zeitpunkt was bei einem Container passiert. Erklärung bitte 😅

Link to comment
33 minutes ago, mgutt said:

@ich777 Hier noch mal der Screenshot. Der Container führt zu Anfang ein "mv" aus. Daher hatte ich gedacht, dass wenn man /usr/local/antmedia mit dem Host verlinkt, dass die start.sh dann auf dem Host landet

Nein, das ist das Dockerfile, alles was im Dockerfile geschieht wird beim erstellen der Images/Containers ausgeführt und ins root Filesystem installiert/kopiert.

 

Wenn du dann den 'docker run' Befehl ausführst werden die Images bzw der Container heruntergeladen und dann der Entrypoint ausgeführt.

 

Normalerweise hat man in seinem Entrypoint irgend eine Routine drin die die erforderlichen Daten in das Arbeitsverzeichnis bzw. in das gemountete Verzeichnis vom Host verschiebt wenn dies erforderlich ist.

 

Es wäre die Frage wo die Einstellungen gespeichert werden für diese App, wenn die im Home Verzeichnis vom Benutzer gespeichert werden dann wäre es wohl am besten das Verzeichnis /root vom Container auf den Host zu mounten, ist aber nur eine wilde Annahme das die dort gespeichert werden.

 

Wie @alturismo sagt, das Image sieht nicht danach aus das irgendwas persistant ist wenn mal ein update gemacht wird...

 

EDIT: Der Container ist nicht wirklich darauf ausgelet was zu speichern oder er ist einfach falsch konzipiert, oder ihr versucht mal das Verzeichnis: /usr/local/antmedia/conf auf den Host zu mounten, aber das ist auch nicht garantiert das es funktioniert weil dann eben die Datei nicht existiert, mit ein bisscgen Glück wird die erstellt von der App wenn sie nicht gefunden wird.

Link to comment
4 minutes ago, ich777 said:

Normalerweise hat man in seinem Entrypoint irgend eine Routine drin die die erforderlichen Daten in das Arbeitsverzeichnis bzw. in das gemountete Verzeichnis vom Host verschiebt wenn dies erforderlich ist.

Ok, aber das heißt der Mount passiert, bevor ENTRYPOINT ausgeführt wird? Das tolle ist nämlich, dass hier steht, dass der Mount nach ENTRYPOINT erfolgt:

https://stackoverflow.com/questions/45027588/docker-entrypoint-to-run-after-volume-mount

 

Und hier steht, dass es davor passiert 😅

https://stackoverflow.com/questions/38469569/docker-mount-happens-before-or-after-entrypoint-execution/38469882#38469882

 

 

Link to comment
20 minutes ago, mgutt said:

Ok, aber das heißt der Mount passiert, bevor ENTRYPOINT ausgeführt wird?

Vergiss das alles... :D

 

Alles was im Dockerfile steht wird zum erstellen der/des Images/Containers verwendet und wird lange bevor der Container auf dem Host läuft ausgeführt und dann auf DockerHub gepusht.

 

Wenn du dann den Docker von DockerHub pullst werden die Images heruntergeladen und dann wird als erstes der Entrypoint ausgeführt.

 

Sicher kannst du auch direkt auf unRAID einen Container per Dockerfile erstellen aber das ändert nichts dran wie die Reihenfolge ist.

 

In dem Container fehlt einfach eine Routine alles richtig zu kopieren bzw. ist das ein eher schlecht gemachter Container in meinen Augen, der läuft auch als root oder (hab mir den nicht so genau angesehen)?

Link to comment
On 2/6/2022 at 4:50 PM, ich777 said:

Vergiss das alles... :D

 

Alles was im Dockerfile steht wird zum erstellen der/des Images/Containers verwendet und wird lange bevor der Container auf dem Host läuft ausgeführt und dann auf DockerHub gepusht.

 

Wenn du dann den Docker von DockerHub pullst werden die Images heruntergeladen und dann wird als erstes der Entrypoint ausgeführt.

 

Sicher kannst du auch direkt auf unRAID einen Container per Dockerfile erstellen aber das ändert nichts dran wie die Reihenfolge ist.

 

In dem Container fehlt einfach eine Routine alles richtig zu kopieren bzw. ist das ein eher schlecht gemachter Container in meinen Augen, der läuft auch als root oder (hab mir den nicht so genau angesehen)?

Was ist deine Einschätzung kann man den Container lauffähig machen? 

 

Link to comment
1 hour ago, Curtis777 said:

Was ist deine Einschätzung kann man den Container lauffähig machen? 

 

hast du mal nach einem Alternativen geschaut wo persistent ausgelegt ist ?

 

Beispiel https://hub.docker.com/r/fluential/ant-media-server

 

könnte ein Anfang sein ...

image.png.042fa6749bad1a22a958e25a5a523e88.png

 

das hat auch nichts mit unraid zu tun sondern ist app/docker spezifisch, les dich mal generell zum Thema ein um zu verstehen auf was du achten solltest und wie dann Pfade (mounts) zu nutzen wären, bzw. ob und wie die eingebunden sind, dann siehst du schon fast ob das persistent ist oder nicht.

  • Like 1
Link to comment
1 hour ago, alturismo said:

hast du mal nach einem Alternativen geschaut wo persistent ausgelegt ist ?

 

Beispiel https://hub.docker.com/r/fluential/ant-media-server

 

könnte ein Anfang sein ...

image.png.042fa6749bad1a22a958e25a5a523e88.png

 

das hat auch nichts mit unraid zu tun sondern ist app/docker spezifisch, les dich mal generell zum Thema ein um zu verstehen auf was du achten solltest und wie dann Pfade (mounts) zu nutzen wären, bzw. ob und wie die eingebunden sind, dann siehst du schon fast ob das persistent ist oder nicht.

natürlich versuche ich mehrere aus, bin da mal mit dem neuesten gestartet!

 

Ich würde es echt gerne verstehen um künftige Dumme Fehler zu vermeiden.

 

Bedeutet das in diesem Fall ich mounte mein /appdata/antmedia unter /antmedia ?

 

 

Screenshot 2022-02-07 214750.png

 

Ps habs mal versucht so zu mounten und testweise ein Video reingeladen.

der appdata folder bleibt leer wenn er unter /antmedia gemountet wird.

Edited by Curtis777
Link to comment
22 minutes ago, mgutt said:

Der Container erstellt ein Volume:

https://github.com/fluential/ant-media-server-docker/blob/main/Dockerfile

 

Volumes existieren so viel ich weiß im Falle von unRAID im docker.img und sind damit für den Nutzer nicht greifbar.

 

Man könnte zwar das komplette docker.img sichern, aber das ist eigentlich nicht der Sinn der Sache.

Ok, ich hab's als Ordner ausgelegt. Also meine appdata Sachen sind alle wunderbar zugänglich für mich.

Dann muss ich mir einen Weg suchen daß er den docker direkt auf die SSD packt wo genug Platz ist. 

Denn es kann sein daß hier einiges an GB zusammenkommt.

 

Danke für eure Unterstützung.

Der Container läuft in der Tat selbst nach einem Neustart des Containers oder reboot der Maschine wie vorher.

Danke 

Link to comment
39 minutes ago, Curtis777 said:

Der Container läuft in der Tat selbst nach einem Neustart des Containers oder reboot der Maschine wie vorher.

 

 

nur am Rand, das sollte bei allen so sein ... nur Update oder Änderung (= wie Neuinstallation) wird das was "innerhalb" des Dockers passiert ist neu machen ...

 

Du kannst das jetzt vorweg auch selbst testen, ändere ein Setting (es reicht bereits ein Leerzeichen hinter dem Port und wieder löschen), dann apply, dann ...

 

Nur zum Thema "Docker verstehen ..."

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...