Tipps: Erste Erfahrungen mit der Container Station

  • In den letzten drei Tagen hab' ich einige Tests mit der Container Station gemacht. Bisher war es so dass ich meine Apps (ownCloud, etc) in einzelnen virtuellen Maschinen verpackt hatte, um das System stärker abzusichern. Da in der 4.2 Beta jetzt LXC-Container unterstützt werden kann ich in Zukunft Ressourcen sparen und die Apps in Container packen statt auf eine komplette Virtualisierung zu setzen. So viel zum Hintergrundgedanken. Im folgenden einige Tipps die vielleicht dem einen oder anderen auch helfen könnten (Linux-Kentnisse nötig!).


    Aufgepasst beim Upgrade auf Debian 8 "Jessie". Zur Auswahl in der Container Station steht derzeit nur Debian 7, und das aus guten Grund. Debian 8 benutzt als Init-System nicht mehr "SysVinit", sondern "systemd" (kann man googeln), und das ist (noch nicht) mit LXC-Containern kompatibel. Wer dennoch upgraden will muss statt dem üblichen "apt-get dist-upgrade" stattdessen "apt-get dist-upgrade sysvinit-core" aufrufen, damit weiterhin das alte Init-System verwendet wird. Wer (wie ich) zu schnell war kann das aber auch recht schnell manuell reparieren: Per SSH ins NAS einloggen, "chroot /share/[SHARE-MIT-DEN-CONTAINERN]/container-station-data/lib/lxc/[CONTAINERNAME]/rootfs" aufrufen, dann "apt-get install sysvinit-core --purge", warten, "exit", fertig.


    Leider ist es derzeit mit der Container Station Version (0.95.7) nicht möglich, Port-Weiterleitungen nach dem Anlegen der Container zu ändern. Auf Nachfrage erhielt ich vom Support die Antwort "This is a limitation now, we will improve editing container in the end of Aug.". Da ich aber keinen Bock hab', meine Container immer wieder neu anzulegen wenn ich mal schnell meine Port-Weiterleitungen ändern will hab' ich auch dafür einen Lösungsweg gefunden: Backup ;-), Container herunterfahren, dann kann man in der Datei "[SHARE-MIT-DEN-CONTAINERN]/container-station-data/lib/lxc/[CONTAINERNAME]/qnap.json die Ports ändern (siehe unten) und danach den Container wieder hochfahren.


    Selbiges gilt, wenn man nachträglich Order vom NAS im Container mounten will, da muss man derzeit auch noch manuell eingreifen.


    Bei mir sieht die "qnap.json"-Datei beispielsweise folgendermaßen aus:

    Code
    {"resource": {"device": [], "limit": {"cputime": 500, "memory": "2048m"}}, "name": "owncloud", "arch": "amd64", "image": "debian-wheezy", "volume": {"new": [], "host": {"/share/ownCloud/data": {"bind": "media/owncloud-data", "ro": false}}, "container": []}, "autostart": false, "type": "lxc", "network": {"hostname": "owncloud", "port": [[4443, 443, "TCP"], [4222, 22, "TCP"]]}}


    Hier hab' ich beispielsweise den Ordner "/share/ownCloud/data" im Container als "/media/owncloud-data" eingebunden (Zielordner vorne ohne /). Ausserdem hab' ich die NAS-Ports 4443 und 4222 jeweils auf die Container-Ports 443 bzw 22 weitergeleitet.


    Falls Interesse besteht kann ich demnächst ein kompletteres HowTo erstellen, wie man ownCloud in einem LXC-Container auf Debian 8 installiert.

  • Hallo michel,


    cool du bist der Erste, der hier im Container Station schreibt ... hab mich schon gewundert warum noch niemand dazu was zu berichten hat! Diverse Applikationen hab ich schon getestet, allerdings stoße ich bei Zarafa immer wieder auf das Problem, dass versucht wird trotz http / Port 80 auf https zuzugreifen und dann nichts angezeigt wird.


    Code
    docker ps
    
    
    f7c7daac069e        leckerbeef/zarafa:latest   "/bin/bash /usr/loca   32 hours ago        Up 26 hours         0.0.0.0:32775->22/tcp, 0.0.0.0:32778->80/tcp, 0.0.0.0:32783->236/tcp, 0.0.0.0:32776->237/tcp, 0.0.0.0:32777->389/tcp, 0.0.0.0:32784->443/tcp, 0.0.0.0:32779->10022/tcp, 0.0.0.0:32780->10080/tcp, 0.0.0.0:32773->10236/tcp, 0.0.0.0:32781->10237/tcp, 0.0.0.0:32782->10389/tcp, 0.0.0.0:32774->10443/tcp   zarafa-1


    Grüße
    Christian

  • Zitat von "christian"

    allerdings stoße ich bei Zarafa immer wieder auf das Problem, dass versucht wird trotz http / Port 80 auf https zuzugreifen und dann nichts angezeigt wird.


    Schon einen anderen Browser probiert? Chrome sendet seit dem letzten Update einen neuen Header mit, der verschiedene Anwendungen dazu bewegt auf https umzuleiten. Bei einem Kunden hatten wir letzte Woche ein ähnliches Problem mit WooCommerce (hat jetzt nichts mit QNAP zu tun aber vielleicht ist es ja hier das selbe Problem): https://ma.ttias.be/chrome-44-…-applications-everywhere/

  • Andere hab ich auch getestet und auch manuell versucht die Ports anzugeben bzw. aus https ein normales http zu machen. Keine Chance.


    Grüße
    Christian

  • Zitat von "christian"

    Anderen hab ich auch getestet und auch manuell versucht die Ports anzugeben bzw. aus https ein normales http zu machen. Keine Chance.


    Dann kann ich dir leider nicht weiterhelfen :-(. Die Portfreigaben haben bei mir anstandslos funktionniert. Allerdings mit LXC-Containern. Mit Docker hab' ich bis jetzt noch nicht gearbeitet weil das für meine Anwendungsgebiete weniger Sinn macht.

  • Nachtrag: Mittlerweile bin ich recht zufrieden mit der ContainerStation. Nur ein kleiner Bug ist mir noch aufgefallen: wenn man NAS-Ordner in einem LXC-Container einbinden will, dürfen die Ordernnamen keine Leerzeichen enthalten, sonst startet der Container nicht, und gibt nicht einmal eine Fehlermeldung aus. Ist schon an QNAP gemeldet, aber ich wollt's nur hier kurz festhalten falls noch jemand auf das gleiche Problem trifft.

  • Guten Morgen!


    Ich wollte die Container-Station gerade installieren. Als Installationsziel kannn ich nur "Public" oder "remote" auswählen. Ist das normal? Ich habe noch viele andere freigegebene Ordner, die kann ich alle nicht anwählen.




    Gruß
    Mike

  • Zitat von "Mike0185"


    Ich wollte die Container-Station gerade installieren. Als Installationsziel kannn ich nur "Public" oder "remote" auswählen. Ist das normal? Ich habe noch viele andere freigegebene Ordner, die kann ich alle nicht anwählen.


    Ich kann mich nicht mehr daran erinnern welche Ordner bei mir zur Auswahl angeboten wurden weil ich mir für die Container eine einzelne Freigabe erstellt hatte und zumindest die angezeigt wurde. Wirklich helfen kann ich dir also nicht. Was haben die fehlenden Freigaben denn gemeinsam? Sind sie vielleicht jeweils nur für einzelne Nutzer sichtbar oder beispielsweise alle als Multimedia-Ordner eingetragen? Es wäre interessant das "Ausschlusskriterium" zu erfahren. :)

  • Ich hatte auch eine einzelne Freigabe erstellt, mit Adminrechten. Mit dessen Benutzer war ich auch eingeloggt. Ich sehe allerdings trotzdem nur "Public" und den "remote"-Ordner. Der Admin hat auf alle Freigaben natürlich Zugriff und ich habe weit aus mehr als nur die zwei. Ich habe die TS-453-Pro8G mit der aktuellen Beta 4.2. Mehr Infos kann ich leider auch nicht liefern, ggf. ist es auch nur ein Beta-Bug.


    Gruß und Danke
    Mike

  • Debian Jessie gibt es jetzt als fertigen LXC Container. Upgrade sollte damit kein Problem sein.


    Ich habe ein Problem mit der Console. Ich kann dort nichts aus der Zwischenablage einfügen. Gibt es da irgend einen Trick? Ich würde eine Putty Verbindung bevorzugen.


    Was muss ich machen damit ein bestimmter Befehl beim Hochfahren des LXC Debian ausgeführt wird?

  • Zitat von "skunk"

    Debian Jessie gibt es jetzt als fertigen LXC Container. Upgrade sollte damit kein Problem sein.


    Sehr gut, danke für die Info.


    Zitat von "skunk"

    Ich habe ein Problem mit der Console. Ich kann dort nichts aus der Zwischenablage einfügen. Gibt es da irgend einen Trick?


    Bei mir klappt das mit dem Kopieren/Einfügen im Vollbildmodus ohne Problem (direkt über der Konsole sind zwei kleine Pfeile; ein Klick da drauf und die Konsole wird in einem neuen Browserfenster im Vollbildmodus geöffnet).


    Zitat von "skunk"

    Ich würde eine Putty Verbindung bevorzugen.


    Dazu musst du eine Portfreigabe erstellen von einem beliebigen Port auf den Container-Port 22. Falls du das nicht schon beim Erstellen des Containers gemacht hast, musst du das leider in der Beta noch manuell in der "qnap.json" (siehe meinen Beitrag oben).
    Danach musst du über die Browser-Konsole einfach "passwd" eingeben und ein Passwort für den "root"-Benutzer festlegen und schon kannst du dich mit Putty über den von dir gewählten Port einloggen.


    Zitat von "skunk"

    Was muss ich machen damit ein bestimmter Befehl beim Hochfahren des LXC Debian ausgeführt wird?


    Da gibt es mehrere Wege. Am einfachsten ist es, mit "Cron" zu arbeiten. Dazu brauchst du allerdings einen Editor. In Debian/Ubuntu kannst du z.B "nano" benutzen: "apt-get install nano". Danach einfach "crontab -e" eingeben, falls nach dem Editor gefragt wird nano auswählen, dann in eine neue Zeile "@reboot /pfad/zum/befehl/den/du/ausführen/willst", STRG+X zum schliessen, mit "Y" bestätigen, fertig.

  • Perfekt. Ich danke dir.


    Das Einfügen über die Konsole im Vollbildmodus hat es wie gesagt nicht funktioniert. Wenn das mit der Portfreigabe so einfach ist Putty zum Laufen zu bekommen, dann werde ich das ohnehin bevorzugen. Nicht nur zum Einfügen sondern auch aus diversen anderen Gründen. Warum ist da ein Passwort notwendig bzw warum kann sich die Browser Konsole ohne Passwort anmelden?


    Beim Texteditor bin ich den VI gewöhnt und der fehlte bisher nie :) Sollte also kein Problem sein die Contab zu verändern.

  • Zitat von "skunk"

    Warum ist da ein Passwort notwendig bzw warum kann sich die Browser Konsole ohne Passwort anmelden?


    Anders als bei einer vollständigen Virtualisierung benutzt der Container den Kernel des Host-Systems. Das ermöglicht es dem Host-System, sich ganz einfach ins Container-System "einzuhängen", ohne sich zu authentifizieren (d.h. ohne Passwort). Das passiert dann auch bei der Browser-Konsole: das NAS-Betriebssystem hängt sich in den Container ein und leitet die Ausgabe einfach nur an den Browser und die Eingabe wieder zurück an den Container.


    Du kannst das auch manuell ausprobieren: Nachdem du dich per SSH in dein NAS einloggst, kannst du mit "lxc-attach --name CONTAINERNAME" ganz einfach ohne Passwort (und ohne vorherige Portfreigabe) zum Container wechseln. Zum verlassen einfach "exit" eingeben.


    Sobald du dich aber von einem anderen Rechner (beispielsweise vom PC) direkt in den Container einloggen willst, muss eine vollständige Authentifizierung erfolgen. Aus Sicherheitsgründen ist aber bei den fertigen Container-Abbildern kein Passwort gesetzt (sonst hätte ja jeder das selbe Passwort), und deshalb muss man erstmal eins festlegen.


    Ich hoffe das war verständlich genug erklärt ;)

  • lxc-attach --name CONTAINERNAME habe ich ausprobiert und das ist sogar besser als die Port Freigabe. So gelten für den Container automatisch die gleichen Sicherheitseinstellung wie für das NAS selber. Für Putty macht es keinen Unterschied.

  • Hallo,


    ist es möglich das ein LXC-Container eine eigene IP-Adresse bekommt und damit im Netzwerk über alle offenen Ports erreichbar ist? Wie z.B. bei VirtualBox mit einer Netzwerkbrücke...