Skip to content

Docker - Portainer

Linux
  • Meine Aktivitäten mit Docker Containern, sind bis heute recht übersichtlich. Da wären

    Im ersten Link habe ich mich mit einer Dockerinstallation auf einem ROCKPro64 beschäftigt. Im zweiten Link habe ich aufgeschrieben, wie ich eine Dockerinstallation von checkmk auf meinem Haupt-PC aufgesetzt habe usw. Das nutze ich bis heute so, zur Überwachung meiner Server.

    Jetzt war ja letztes Wochenende wieder Chemnitzer Linux Tage (CLT), leider nur online 😞 Ein Wochenende wo ich einigen Vorträgen gelauscht habe und mich auch wieder etwas intensiver mit Open Source Programmen beschäftigt habe. Es ist immer wieder spannend, was es alles so gibt....

    Beim Stöbern und Ausprobieren, bin ich über das Tool Portainer gestolpert. Portainer ist eine Webanwendung um die Dockercontainer zu administrieren.

    Installation

    docker volume create portainer_data
    docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
    

    Quelle: https://documentation.portainer.io/v2.0/deploy/ceinstalldocker/

    Wir erzeugen einen dauerhaften Speicherort (Volumes) portainer_data
    Danach starten wir den Docker Container. Es werden zwei Ports zugewiesen. Dazu folgendes.

    By default, Portainer will expose the UI over the port 9000 and expose a TCP tunnel server over the port 8000. The latter is optional and is only required if you plan to use the Edge compute features with Edge agents.

    Ok, wir finden das UI auf dem Port 9000

    Webinterface

    http://192.168.3.213:9000/#!/home
    

    bf8b2260-1d1f-4685-8e9d-ea7fd40fe7b1-image.png

    Hier sieht man die Übersicht. Einmal meinen Haupt-PC und einen ROCKPro64 auf dem Docker läuft. Wie man den ROCKPro64 einbindet erläutere ich später.

    Übersicht der Container, die auf dem Haupt-PC vorhanden sind und der Status usw.

    7615e2cb-062e-437f-b1a0-833112f02113-image.png

    Was man alles mit Portainer machen kann, findet man in der Doku.

    Endpoint

    Was ich gelernt habe und extrem spannend finde ist, das man auch entfernte Rechner ganz einfach einbinden kann und dann dort die Docker Container installiert, startet, stopped usw.

    Installation auf dem Endpoint (Server)

    Auf dem entfernten Rechner, muss ein Agent installiert werden. Das ist auch einfach nur ein Docker Container.

    docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent
    

    Im Webinterface des steuernden Rechners, erstellt man dann einen Endpoint.

    7d358bbd-da25-4d54-ba48-b476329689bb-image.png

    Nun kann man aus dem Webinterface heraus mit den Docker Containern spielen 🙂

    f6ee69ae-9249-4ceb-9b0a-8f6b78b610fb-image.png

    Wir starten mal den Nginx Server.

    46502e47-293f-4de7-ada2-94a84d708950-image.png

    Der Nginx Server läuft auf dem Port 49156. Das ist im Container alles einstellbar.

    123570bc-bf33-49fd-9c6f-975d497a9e7b-image.png

    Ich arbeite gerne auf der Konsole, aber das ist eine echte Erleichterung da ich im Docker Universum nicht so bewandert bin. Hier kann man schnell mal was ändern und ausprobieren usw. Viel kaputt machen kann man eigentlich auch nicht. Tolle Sache um mal schnell was auszuprobieren.

    Und ein Projekt habe ich schon im Kopf, was ich evt. auch mal produktiv einsetzen werden, vermutlich am Anfang aber nur als Testsystem. Dazu soll mir dann ein Server in der Hetzner Cloud dienen, aber dazu wird es dann sicherlich einen neuen Beitrag geben.

    Was fehlt hier? Das Thema

    Sicherheit

    Container sind für mich Neuland. Man sollte sich zu dem Thema einlesen. Das das Webinterface über TLS laufen muss, muss ich hier nicht erwähnen. Bei mir lokal ist das nicht das große Problem, im Internet aber mit Sicherheit! Das die Kommunikation zum Agent abgesichert werden muss, sollte auch klar sein. Mir fällt dazu ein Wireguard Tunnel ein!?

    Die Container Sicherheit ist auch ein sehr breites Thema. Auch dazu muss man sich mit Sicherheit intensiv beschäftigen, bevor man einen Server mit Docker ans Netz hängt!

  • Nachdem ich jetzt ein wenig gespielt habe, bin ich über die Funktion Stacks gestolpert. Heißt auf deutsch Stapel. Ok, dann probieren wir das mal.

    Voraussetzung

    Für Stacks braucht man das Tool docker-compose

    apt install docker-compose
    

    Danach kann man die Stapel deployen.

    Textdatei erstellen

    Für das Deployen braucht man eine Textdatei namens docker-compose.yml Der Portainer nimmt uns das ab, und macht ein Edit-Fenster auf, wo wir den Text einfügen können.

    compose.png

    In diesem Beispiel erstellen wir zwei Container.

    • mariadb
    • adminer

    Ich denke, wer so was schon mal konventionell installiert hat, weiß worum es geht. Den Stack kann man dann deployen. Dann werden diese Container installiert und gestartet.

    Kontrolle

    adminer.png

    Ich kann mich noch gut dran erinnern, wie ich einen Adminer auf einem Server installiert habe. Das hat was länger gedauert 😉 Hier klick, fertig.

    Migrate / Duplicate

    Und jetzt wird es spannend 😁

    fb5a8a8f-7ffd-4468-bb54-0bf667c61504-image.png

    Man kann den erstellten Stack ganz einfach migrieren. Dazu wähle ich den vorhanden Stack aus, wähle einen Endpoint und klicke auf Migrate und das wird alles auf dem Endpoint installiert und gestartet. Dauerhaft abgelegte Daten ziehen nicht mit um, wenn ich das richtig verstanden habe. Da muss man sich selber drum kümmern.

    Erkenntnisse

    Man kann so einen Stack ganz bequem lokal konfigurieren und schiebt das ganze dann einfach auf den produktiven Server, Mir dämmert so langsam, was man damit richtig gut anstellen kann. Ein ganz spannendes Thema, was mich vermutlich noch viele Stunden meiner Freizeit kosten wird. Zum Glück habe ich da immer sehr viel Spaß bei. Ok, ich bin ehrlich, wenn was nicht geht kann einen das auch schon mal ärgern. Das kommt aber die letzten Jahre immer seltener vor 😉

    Sicherheit

    Bitte beachten, ich betrachte zum jetzigen Zeitpunkt nicht unbedingt die Sicherheitsaspekte. Das wächst dann mit der Zeit. Für den produktiven Einsatz habe ich aktuell nichts am laufen. Ich hoffe aber, das das bald der Fall ist. Liest hier zufällig ein Dockerspezialist mit? Gute Lesetipps gesucht!

    • Checkliste Sicherheit Docker Container
    • Worauf muss man achten?
    • Gute Links werden gebraucht..
  • Dann grabe ich das mal wieder aus 😉

    Bedingt durch den Wegfall meines Proxmox, musste ich mir Gedanken darüber machen, wie ein paar Dienste auch weiterhin laufen sollen. Um mal die zwei wichtigsten zu nennen.

    • checkmk
    • DokuWiki

    Diese sollen später, wenn der zweite NanoPi R5S aus China da ist, dort laufen. Da der aber mit der Schneckenpost kommt, kann man ja in der Zwischenzeit mal wieder mit Docker spielen.

    Ich erinnerte mich daran, das checkmk eine sehr gute Anleitung hat, so das ich das mal wieder ausprobierte. Klappte einwandfrei. Dann erinnerte mich an Portainer und dachte mir, das probiere ich mal wieder aus 🙂

    1d2dc9b3-ad71-45c5-b552-72c88a1bf773-grafik.png

    Ich hatte übrigens die Endpoints gesucht und nicht gefunden, die heißen jetzt Environments. Auf dem Bild ist noch keiner eingerichtet.

    4bdbf196-1b36-4e65-94d0-0e56daa473bf-grafik.png

    Irgendwie ist das wirklich richtig gute Software. Ich mag den Portainer und auch als selbst ausgebildeter ITler 😉 kommt man damit sehr schnell ganz gut zurecht.

    Ja, man kann die ganzen Docker Befehle auch über die Konsole eingeben, was ich normalerweise auch mit ganz vielen Dingen mache, aber das macht hier einfach Spaß. Man hat auch schnell einen guten Überblick was wo läuft usw.

    Wer so was sucht, einfach mal ausprobieren. Klare Empfehlung von mir.

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • MongoDB - Erste Erfahrungen

    Linux
    2
    0 Stimmen
    2 Beiträge
    144 Aufrufe
    FrankMF

    So frisch von der MongoDB Front und wieder viel gelernt, weil beim Üben macht man Fehler 🙂

    Oben war ja mongodump & mongorestore von der KI empfohlen. Hier das wie ich es gemacht habe.

    mongodump frank@redis-stack:~$ mongodump -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio -o mongodump/ 2024-04-06T09:29:25.174+0200 writing portfolio.stockList to mongodump/portfolio/stockList.bson 2024-04-06T09:29:25.175+0200 writing portfolio.users to mongodump/portfolio/users.bson 2024-04-06T09:29:25.175+0200 done dumping portfolio.stockList (8 documents) 2024-04-06T09:29:25.176+0200 writing portfolio.total_sum to mongodump/portfolio/total_sum.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.total_sum (1 document) 2024-04-06T09:29:25.177+0200 writing portfolio.old_total_sum to mongodump/portfolio/old_total_sum.bson 2024-04-06T09:29:25.177+0200 writing portfolio.stocks to mongodump/portfolio/stocks.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.users (4 documents) 2024-04-06T09:29:25.178+0200 writing portfolio.settings to mongodump/portfolio/settings.bson 2024-04-06T09:29:25.178+0200 done dumping portfolio.settings (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.old_total_sum (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.stocks (34 documents) mongorestore mongorestore -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio mongodump/meineDatenbank/

    Hier wird die Datensicherung mongodump/meineDatenbank/ in die neue Datenbank portfolio transferiert.

    Grund für das Ganze? Mich hatte der Datenbank Name meineDatenbank gestört.

    Benutzerrechte

    Jetzt der Teil wo man schnell was falsch machen kann 🙂 Ich hatte also die neue Datenbank, konnte sie aber nicht lesen. Fehlten halt die Rechte. Ich hatte dann so was hier gemacht.

    db.updateUser("frank", { roles: [ { role: "readWrite", db: "meineDatenbank" }, { role: "readWrite", db: "portfolio" }]})

    Ging auch prima, kam ein ok zurück. Nun das Problem, ich hatte beim Einrichten, den User frank als admin benutzt. Durch den oben abgesetzten Befehl (frank ist ja admin), wurden die neuen Rechte gesetzt und die Rechte als Admin entzogen!! Das war jetzt nicht wirklich das was ich gebrauchen konnte. LOL

    Ich hatte jetzt keine Kontrolle mehr über die DB. Das war aber nicht so wirklich kompliziert, das wieder zu ändern. Die Authentication temporär abstellen. Also /etc/mongod.conf editieren und

    #security: security.authorization: enabled

    eben mal auskommentieren. Den Daemon neustarten und anmelden an der DB.

    mongosh --host 192.168.3.9

    Danach neuen User anlegen

    db.createUser({ user: "<name>", pwd: "<password>", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

    mongod.conf wieder ändern und neustarten. Danach hat man wieder eine DB mit Authentifizierung und einen neuen Admin. Ich bin diesmal, man lernt ja, anders vorgegangen. Es gibt nun einen Admin für die DB und einen User zum Benutzen der Datenbanken! So wie man es auch auf einem produktiven System auch machen würde. Wenn ich jetzt mal was an den Benutzerrechten des Users ändere, kann mir das mit dem Admin nicht mehr passieren. Hoffe ich 🙂

  • Redis Stack?

    Redis
    1
    0 Stimmen
    1 Beiträge
    124 Aufrufe
    Niemand hat geantwortet
  • Rest-Server v0.12.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    82 Aufrufe
    Niemand hat geantwortet
  • Redis - Datenbanken löschen

    Redis
    1
    0 Stimmen
    1 Beiträge
    210 Aufrufe
    Niemand hat geantwortet
  • FAN control OMV Auyfan 0.10.12: gitlab-ci-linux-build-184, Kernel 5.6

    Linux
    12
    1 Stimmen
    12 Beiträge
    1k Aufrufe
    M

    Hi,

    since I'm currently change my rockpro64 setup I came across this.

    With the kernel from ayufan you need to set PWM_CTL to

    /sys/devices/platform/pwm-fan/hwmon/hwmon3/pwm1

    for my self compiled one I need

    /sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1

    But I got it only working with one entry for PWM_CTL e.g.

    PWM_CTL = "/sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1",

    after that you need to start ats again

    sudo systemctl stop ats sudo systemctl start ats

    initially the fan should start immediately for a short period of time.

    In case it is even a different one on your kernel you can find the right one using this command.

    sudo find /sys -name pwm1 | grep hwmon

    So far I'm not sure which kernel parameter or modul changes this.

    Martin

  • Hetzner - Backupspace - Borgbackup

    Linux
    4
    0 Stimmen
    4 Beiträge
    924 Aufrufe
    FrankMF

    Ok, da gibt es doch wohl noch ein kleines Problem 🙂

    Hetzner hat die Dienste migriert und ich war der Meinung, der Borg funktioniert nicht mehr. Ok, das hat er auch gemacht, aber der Grund wurde mir dann vom Support mitgeteilt, Der Backup Space ist voll. Huch, was läuft denn da falsch!?

    Ich konnte den Backup Space noch per SFTP erreichen, Borg gab aber immer eine merkwürdige Fehlermeldung heraus.
    Also aufpassen, wenn ihr mal Probleme habt, schaut mal nach ob ihr noch genug Platz habt 😉

    Und jetzt muss ich das Script mal ein wenig überarbeiten, irgendwas läuft da nicht so, wie ich mir das vorstelle.

  • Debian Buster 10 Release

    Linux
    3
    0 Stimmen
    3 Beiträge
    389 Aufrufe
    FrankMF

    Da man ja beim Login auswählen kann, mit was die Session startet, war ich doch jetzt etwas neugierig was überhaupt läuft.

    IMG_20190707_092217.jpg

    frank@debian:~$ echo $WAYLAND_DISPLAY frank@debian:~$ loginctl SESSION UID USER SEAT TTY 7 1000 frank seat0 tty2 c1 116 Debian-gdm seat0 tty1 2 sessions listed. frank@debian:~$ loginctl show-session c1 -p Type Type=x11 frank@debian:~$ loginctl show-session c1 Id=c1 User=116 Name=Debian-gdm Timestamp=Sat 2019-07-06 22:43:34 CEST TimestampMonotonic=30094837 VTNr=1 Seat=seat0 TTY=tty1 Remote=no Service=gdm-launch-environment Scope=session-c1.scope Leader=1015 Audit=4294967295 Type=x11 Class=greeter Active=no State=online IdleHint=yes IdleSinceHint=1562446130937731 IdleSinceHintMonotonic=346278596 LockedHint=yes

    Die Installation der Nvidia Treiber macht da wohl einen x11 Desktop raus. Aber auch nicht weiter schlimm, der Wayland lief ja hier überhaupt nicht. Würde mich aber über interessante Links zum Thema freuen 😉

  • ACER und der UEFI-Booteintrag!

    Linux
    1
    0 Stimmen
    1 Beiträge
    218 Aufrufe
    Niemand hat geantwortet