Container Ubuntu 22.04 startup Script

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Hallo!

Ich müsste ein Script starten, wenn der Container geladen wurde. Leider klappt crontab und auch systemctl nicht in Ubuntu.

Wie kann ich ein Startup Script erstellen?

Danke!
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
1. Entrypoint Skript erstellen

2a. Entweder ein Dockerfile erstellen, dort das Entrypoint-Skript per COPY in das Image kopieren und dann als ENTRYPOINT deklarieren, Image bauen und verwenden,
2b oder das Entrypoint-Skipt mittels -v in den Container mappen und dem Parameter --entrypoint <pfad im Container> (beides vor(!) dem Image angeben) konfigurieren.

Ansatz 2a ist der "normale".
 
  • Like
Reaktionen: Fohnbit

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Vielen Dank, aber Puhh ... hast du für 2a eine Anleitung?
Der Container läuft schon und ist teilweise schon eingerichtet. Das möchte ich ungern nochmal machen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Das Netz ist voller Tutorials die beschreiben wie man Docker Images baut. Eine kurze Google Suche sollte hier etliche Treffer liefern.

Ich würde jetzt auch nur auf die offizielle Dokumentation verweisen: https://docs.docker.com/reference/dockerfile/

Der Container läuft schon und ist teilweise schon eingerichtet. Das möchte ich ungern nochmal machen.
Dann wird dir nicht vermutlich nicht gefallen, dass ein Dockerfile ab einem Image bei null aufsetzt und dort alles automatisiert definiert sein muss.

Container sind übrigens als Wegwerf-Instanzen von Images gedacht. Deswegen baut man sich auch selbst Images oder nimmt bereits existierende, die das Verhalten mitbringen, was man vom Container erwartet, ohne das man etwas händisch nachinstallieren oder konfigurieren muss. Anwendungsdaten speichert man außerhalb des Container in Volumes (auf der Syno sind es eigentlich Binds), so dass wenn der Container gelöscht und ein neuer Container mit demselben Volume angelegt wird, trotzdem alle Anwendungsdaten da sind.
 
  • Like
Reaktionen: Benie und Benares

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Danke, aber das kann ja nicht unmöglich sein, einen Ubuntu Server beim starten etwas ausführen zu lassen.
Ohne das ich das System neu erstellen muss.

Hab es bei einem neuen kurz getestet. Ich kann beim erstellen des Images kein script angeben, das es nicht gibt. Aber solange ich das Image nicht erstelle, kann ich auch kein script erstellen.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Was genau hast du denn probiert? Du musst das Script ja im Image mit drin haben.
 

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Da ich da sehr unerfahren bin, hier die ganzen Schritte:
  1. Unter Registrierung im Container Manager "Ubuntu" runtergeladen
  2. Das ist das Image1714052282321.png
  3. Das habe ich danach ausgeführt. Einmal mit allen Standard Einstellungen.
  4. Schaut so aus:
    1714052369807.png

Nun möchte ich als Beispiel das ssh läuft. Habe es installiert, bekomme es aber nicht hin, das es mit dem Container startet.

Ich muss immer zuerst im Terminal:
service ssh start
eingeben
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Aber dir wurde doch gesagt, dass dafür am Besten ein eigenes Image erzeugt werden sollte. Das solltest du dann vielleicht auch machen. Vor allem muss der SSH Server ja vorher installiert werden. Sowas gehört ins Image.
 

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Aber dir wurde doch gesagt, dass dafür am Besten ein eigenes Image erzeugt werden sollte. Das solltest du dann vielleicht auch machen. Vor allem muss der SSH Server ja vorher installiert werden. Sowas gehört ins Image.
Danke. Hab ich leider so aufgefasst, das ich das Image erstellen soll. Also ohne das fertige Image runterladen.

Aber wenn ich ein Script beim starten des Container starten könnte, habe ich ja alles. Das ist wirklich unmöglich, einen Autostart zu erzeugen?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Du sollst ein EIGENES Image erstellen. Also ein Dockefile erstellen mit allen Anweisungen und dann das Image bauen. Das wirst du über den Container Manager nicht hinbekommen.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Weil Images nicht dafür da sind diese anzupassen sondern einfach nur zu nutzen. Wenn du was anpassen willst, dann musst du ein eigenes erzeugen.
 

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
ok, ist komplizierter als gedacht. Hoffte ich habe ein teilweise volle Ubuntu Umgebung im Container.

Aktuell löse ich es so:
docker exec ubuntu-1 /bin/sh /etc/startup.sh

Bis ich das mit dem Images verstanden habe.
 

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Noch eine Frage:
Es gibt die Option Projekt im Container Manager. Da kann ich ein docker-compose.yml erstellen/eingeben. Wäre das auch denkbar?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Nein, die Compose beschreibt nur die Konfiguration wie das Image benutzt wird. Also das was du sonst über den Container Manager einstellst bzw. mit dem docker run Befehl. Aber du musst erst ein Image selber bauen. @haydibe hat dir doch sogar die Doku verlinkt wie man ein eigenes Image baut.
 
  • Like
Reaktionen: Benie

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
  • Like
Reaktionen: Benie und Fohnbit

Fohnbit

Benutzer
Mitglied seit
05. Apr 2024
Beiträge
43
Punkte für Reaktionen
2
Punkte
8
Hi!

Ich kann dir diese Anleitung empfehlen.
Oh, die ist gut. Danke!!

Wobei mir scheint, Docker ist etwas, wenn ich Systeme oft und verbreitet aufsetzen möchte. Ich bräuchte ja nur das selbe, wie ein Hyper-V Image. Einmal installieren und fertig.

Mit Hyper Backup hoffe ich doch das die Container 1:1 gesichert werden(?)
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Ob du es glaubst oder nicht, aber ich befinde mich auch noch in der Findungsphase, tendiere aktuell aber immer mehr zu einer VM als zu einem Container, zumindest wenn es um eine Linux Umgebung wie Ubuntu Server, Lubuntu oder auch Linix Mint Xfce geht. Wobei man dabei auch unterscheiden muss, was man am Ende genau machen möchte. Mir geht es in erster Linie halt darum, ein plattformunabhängiges System zu haben, welches zentral auf der DS läuft und ich von allen Clients, die sich in meinem Netzwerk so tummeln, genutzt werden kann. Mir ist weniger wichtig ein System zu haben, welches nur für den Moment des Einsatzes initiiert wird und anschließend wieder weggeschmissen wird.

Auf der anderen Seite habe ich bereits erfolgreich den Nginx Proxy Manager als Docker Container am Laufen, der natürlich auch ständig läuft und nicht permanent weggeschmissen wird. Es gibt auch durchaus Apps, die für Docker prädestiniert sind, wie z.B. Nextcloud, Vaultwarden oder von mir aus einen beliebigen Webserver inkl. Datenbankanbindung. Andere Dinge hingegen sind da wohl eher in einer VM besser aufgehoben. Es gilt also, für sich herauszufinden, welche Ziele man verfolgen möchte.

Im Speziellen wollte ich mir in einem Docker Container eine git/GitHub Umgebung bauen, in der ich zusätzlich Pakte für Synology NAS System packen kann. Ich musste jedoch feststellen, das sich das Synology Toolkit nicht wirklich in einem Docker Container installieren lassen möchte. Es hagelt dabei ständig Fehlermeldungen. Ich habe es dann irgendwann dran gegeben und mache das alles nun über eine Ubuntu Server VM auf meiner DS. Läuft.

Wie gesagt, wenn du etwas Statisches haben möchtest, dann wohl eher VM, ansonsten gerne auch Docker.

Mit Hyper Backup hoffe ich doch das die Container 1:1 gesichert werden(?)
Hyper Backup sichert dir nur die persistenten Volumes die du z.B. unter /volume1/docker angelegt hast. Die Container selbst, sichert Hyper Backup meines Wissens nicht.

Tommes
 
Zuletzt bearbeitet:

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.611
Punkte für Reaktionen
759
Punkte
154
Wobei mir scheint, Docker ist etwas, wenn ich Systeme oft und verbreitet aufsetzen möchte.
Da wurde dir doch direkt am Anfang schon gesagt:
Container sind übrigens als Wegwerf-Instanzen von Images gedacht.



Container sind einfach nur eine Umgebung die du jederzeit Systemunabhängig überall direkt aufsetzen kannst. Du hast mit einem Befehl immer die gleiche Umgebung erzeugt. Darauf kannst du dich einfach verlassen. Es gibt keine Konflikte mit anderer Software/Versionen. Das ist nicht dafür um ein Ubuntu zu ersetzen.
 
  • Like
Reaktionen: haydibe und Tommes


 

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