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
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.
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.
Nun kann man aus dem Webinterface heraus mit den Docker Containern spielen
Wir starten mal den Nginx Server.
Der Nginx Server läuft auf dem Port 49156. Das ist im Container alles einstellbar.
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!