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

  • Debian Installer Bookworm RC3 released

    Linux
    2
    0 Stimmen
    2 Beiträge
    70 Aufrufe
    FrankMF

    Und da sind wir schon bei RC4

    Debian Installer Bookworm RC 4 release

    favicon

    (lists.debian.org)

  • Pycharm & Docker

    Verschoben Linux
    1
    0 Stimmen
    1 Beiträge
    93 Aufrufe
    Niemand hat geantwortet
  • Portainer Upgrade

    Linux
    2
    0 Stimmen
    2 Beiträge
    56 Aufrufe
    FrankMF

    Und das geht mit den Agents genauso einfach.

    root@FriendlyWrt:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b806374e5d5 portainer/agent:latest "./agent" 3 months ago Up 5 years 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp portainer_agent 729d6ad08dbc linuxserver/dokuwiki:latest "/init" 3 months ago Up 5 years 443/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp DokuWiki root@FriendlyWrt:~# docker stop portainer_agent portainer_agent root@FriendlyWrt:~# docker rm portainer_agent portainer_agent root@FriendlyWrt:~# docker pull portainer/agent:latest latest: Pulling from portainer/agent 772227786281: Already exists 96fd13befc87: Already exists 0382ee122be2: Pull complete c58a787d67da: Pull complete f185cdc7d05a: Pull complete e6752ff0f773: Pull complete Digest: sha256:2c1abfac4937923e625be5f63a15f49a19cc4cca247c50f8746a9222023865a3 Status: Downloaded newer image for portainer/agent:latest docker.io/portainer/agent:latest root@FriendlyWrt:~# 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:latest 0aabe2273cd6cbf0874c9239d2efc58a848673dd9b13be2a6a26a084b6b9a63d
  • Portainer - Entferntes System einbinden

    Linux
    1
    0 Stimmen
    1 Beiträge
    72 Aufrufe
    Niemand hat geantwortet
  • Mainline 5.12.x

    Images
    2
    0 Stimmen
    2 Beiträge
    278 Aufrufe
    FrankMF

    5.12.0-1149-ayufan released

    ayufan: defconfig: add MT76x* drivers
  • Mainline 5.11.x

    Images
    1
    0 Stimmen
    1 Beiträge
    220 Aufrufe
    Niemand hat geantwortet
  • Liste von Linuxbefehlen

    Angeheftet Linux
    3
    0 Stimmen
    3 Beiträge
    637 Aufrufe
    FrankMF
    systemd Anzeige der geladenen Dienste root@host:/etc/systemd/system# systemctl --type=service UNIT LOAD ACTIVE SUB DESCRIPTION atd.service loaded active running Deferred execution scheduler blk-availability.service loaded active exited Availability of block devices cloud-config.service loaded active exited Apply the settings specified in cloud-config cloud-final.service loaded active exited Execute cloud user/final scripts cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking) cloud-init.service loaded active exited Initial cloud-init job (metadata service crawler) console-setup.service loaded active exited Set console font and keymap cron.service loaded active running Regular background program processing daemon crowdsec-firewall-bouncer.service loaded active running The firewall bouncer for CrowdSec crowdsec.service loaded active running Crowdsec agent dbus.service loaded active running D-Bus System Message Bus getty@tty1.service loaded active running Getty on tty1 ifupdown-pre.service loaded active exited Helper to synchronize boot up for ifupdown keyboard-setup.service loaded active exited Set the console keyboard layout kmod-static-nodes.service loaded active exited Create List of Static Device Nodes lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling mariadb.service loaded active running MariaDB 10.11.3 database server networking.service loaded active exited Raise network interfaces nginx.service loaded active running A high performance web server and a reverse proxy server qemu-guest-agent.service loaded active running QEMU Guest Agent resolvconf.service loaded active exited Nameserver information manager semaphore.service loaded active running Ansible Semaphore serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0 ssh.service loaded active running OpenBSD Secure Shell server systemd-binfmt.service loaded active exited Set Up Additional Binary Formats systemd-fsck@dev-disk-by\x2duuid-1E22\x2dDC00.service loaded active exited File System Check on /dev/disk/by-uuid/1E22-DC00 systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running User Login Management systemd-modules-load.service loaded active exited Load Kernel Modules systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kernel File Systems systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-sysusers.service loaded active exited Create System Users systemd-timesyncd.service loaded active running Network Time Synchronization systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device Nodes in /dev systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories systemd-udev-trigger.service loaded active exited Coldplug All udev Devices systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files systemd-update-utmp.service loaded active exited Record System Boot/Shutdown in UTMP systemd-user-sessions.service loaded active exited Permit User Sessions ufw.service loaded active exited Uncomplicated firewall user-runtime-dir@0.service loaded active exited User Runtime Directory /run/user/0 user@0.service loaded active running User Manager for UID 0 LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 44 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
  • SSH Login ohne Passwort

    Angeheftet Linux
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF

    Wie ihr ja wisst, benutze ich das Forum hier auch gerne als Notizbuch 🙂 Also mal wieder was hier notieren. Mein Windows Systemadmin sagte mir heute, das es auch folgendes gibt

    # ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): /tmp/ed Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /tmp/ed Your public key has been saved in /tmp/ed.pub The key fingerprint is: SHA256:D33HCTW7Dy0p5kQdFTkPudx1PQh0EHFgkBvxy8KwhGM root@frank-ms7c92 The key's randomart image is: +--[ED25519 256]--+ | o=O*o=+=| | . oo o+oB+| | E o o.o.o+*| | . o +o...oo=o| | .So.o= O .| | o.= o + | | . . .| | | | | +----[SHA256]-----+

    Der Key liegt nur in /tmp kopieren lohnt also nicht 🙂

    Ob das jetzt die Zukunft ist, kann ich nicht beantworten. Ich wollte es aber hier mal festhalten, weil es wohl mittlerweile auch von vielen Projekten benutzt wird.

    Link Preview Image ssh-keygen - Wikipedia

    favicon

    (en.wikipedia.org)