Docker mit Portainer verwaltet auf Proxmox installieren

In diesem Beitrag werden wir einen Proxmox-Container aufsetzen, auf dem wir Docker inklusive Docker-Compose und zur Verwaltung über eine GUI Portainer installieren.

Heute möchte ich mit euch eine Portainer verwaltete Docker-Instanz auf einer Proxmox Maschine installieren.

1. Proxmox-Container einrichten

Um Docker auf Proxmox installieren zu können, benötigen wir zuerst ein s.g. Container Template, welches über die GUI von Proxmox bezogen werden kann.

CT Templates können auf einem Speichervolumen heruntergeladen werden, welches ihr bei der Einrichtung von Proxmox hierfür markiert habt. Grundsätzlich ist das Volumen „local (pve)“ hierfür vorausgewählt. Wir wählen das Volumen aus, was ein Menü rechts neben der Server-Übersicht öffnet. Dort wählen wir „CT Templates“ aus, was alle bereits heruntergeladenen Templates in einer Liste anzeigt. Üblicherweise ist dieser Bereich leer.

Um ein Template herunterzuladen, klicken wir auf den Button „Templates“, was ein Auswahlfenster öffnet. In diesem suchen wir nach dem „ubuntu-22.04-standard“ Package, wählen es aus und laden es über den Button „Download“ herunter.

Sobald das Image fertig heruntergeladen ist, erstellen wir einen neuen Container über den Button oben rechts in der Ecke „Create CT“.

In dem erscheinenden Fenster müssen wir eine Containernummer (1) vergeben, welche nicht bereits durch einen anderen Container oder Virtuellen Maschine vergeben ist (Hier 5000). Als Namen wähle ich hier Docker (2). Um später via SSH bzw. über die Shell drauf zugreifen zu können, benötigen wir hier noch ein Passwort (3), welches wir in der Zeile darunter noch bestätigen müssen (4).

Nach einem klick auf „Next“, gelangen wir zur Template Auswahl, in der wir das zuvor heruntergeladene Template auswählen (2), welches sich zu zeigen gibt, nachdem wir den zuvor genutzten Speicherort auswählen (1).

Wir gehen auf Next, woraufhin wir den für Docker genutzten Speicherort (1) und Speicherplatz (2) festlegen müssen. Ich wähle hier 32GB aus, was für die allermeisten Anwendungsfälle ausreichen sollte. Solltet ihr hingegen Unmengen an Container in dieser Docker Instanz nutzen wollen, so vergebt hier lieber 64GB oder mehr.

Zur Auswahl der Rechenleistung gelangt ihr durch einen Klick auf „Next“. Hier könnt ihr eine entsprechende Anzahl an genutzten Kernen vergeben (1). Auch hier reichen für die allermeisten Aufgaben, für welche ich diese Instanz nutze, 2 Kerne aus. Hier kommt es wie immer im Leben auf eure Präferenzen bzw. euren Usecase an.

Aufgrund dessen, dass Docker sehr effizient mit dem verfügbaren Speicher umgeht, können wir im nächsten Fenster, welches wir durch die Schaltfläche „Next“, 2 bis 4 GB Speicher ansetzen (1). Aber auch hier ist die Menge an zugeteiltem Speicher von eurer Nutzung Dockers abhängig.

Im nächsten Abschnitt müssen wir die Netzwerkschnittstelle einstellen. Hierfür wählen wir zunächst die passende Bridge aus (1), sofern ihr hier eine andere als die Standardschnittstelle benötigt. Unter IPv4 geben wir die IP Adresse an (2), unter der wir die Docker-Instanz erreichen wollen gefolgt vom Subnetz des Netzwerkes. Üblicherweise wird hier ein „/24“ angefügt, was einer Subnetzmaske von „255.255.255.0“ entspricht. Als Gateway wird die IPv4 Adresse des Routers eures Netzes angegeben. In diesem Beispiel werden wir die IPv6 Bereiche ausschließen. Solltet ihr dennoch eine IPv6 Adresse benötigen, so wählt hier am besten „SLAAC“ (3) aus, sofern ihr nicht andere Anforderungen durch euer Netz habt.

Im Bereich DNS benötigen wir erstmal keine gesonderten Einstellungen, weshalb wir diesen Bereich mit „Next“ überspringen. Mit einem Druck auf „Finish“ im Bereich „Confirm“, schließen wir die Einrichtung ab und der Container wird erstellt.

Den Task viewer können wir schließen, nachdem der Text „TASK OK“ erscheint.

Bevor wir den Container starten wählen wir diesen auf der linken Seite aus (1), worauf sich im rechten Bereich Optionen zu diesem Container öffnen. Hier wählen wir den Punkt „Options“ (2), doppelklicken auf die Option „Start at boot“ (3) und aktivieren diese Option im daraufhin erscheinenden Fenster.

Im selben Menü wählen wir etwas weiter unten den Bereich „Features“ (1) aus und aktivieren dort die Option „keyctl“ (2), welche für die spätere Dockerinstallation benötigt wird.

Jetzt sind wir startklar weshalb wir die Konsole des Containers (2) nach dem Starten (1) öffnen.

In der Konsole melden wir uns mit dem Benutzer „root“ und dem während der Installation vergebenen Passwort an.

2. Maschine vorbereiten

als erstes führen wir das obligatorische Updaten der Maschine durch.

apt-get update && apt-get upgrade -y

Nach dem Update fügen wir einen Nutzer hinzu, welcher für die Docker Instanz den Zugriff auf Systemressourcen gewährleistet, damit wir diese nicht als root mit allen Rechten ausführen müssen.

adduser admin

für den neuen User müssen wir ein Passwort vergeben und einige Angaben zu dieser Person machen. Bei den Angaben reicht der „Full Name“ aus.

Wir bestätigen die Korrektheit der Eingaben mit „y“ und vergeben die notwendigen Berechtigungen indem wir in der „sudoers“-Datei einen Eintrag hinterlegen.

sudo nano /etc/sudoers

in der Section mit der Überschrift „User privilege specification“ sollten wir bereits einen Eintrag „root ALL=(ALL:ALL) ALL“ finden. Unterhalb fügen wir eine neue Zeile für den soeben angelegten User ein. Hierdurch bekommt der User die notwendigen Adminrechte.

admin ALL=(ALL:ALL) ALL

Wir speichern und schließen die Datei. Die weitere Installation müssen wir mit dem neuen Admin-Konto durchführen. Hierzu loggen wir den root-Benutzer aus.

logout

Und loggen uns wieder mit dem neu angelegten User-Konto ein.

3. Docker und Docker-Compose installieren

Jetzt können wir Docker und notwendige Zusatzpakete (curl, net-tools) installieren.

sudo apt install docker.io curl net-tools -y

Als nächstes laden wir uns das Installationsskript von Docker über das soeben installierte curl herunter.

curl -fsSL https://get.docker.com -o get-docker.sh

und führen dieses aus.

sudo sh get-docker.sh

Danach registrieren wir den Docker-Dienst beim Systemdienst und starten diesen.

sudo systemctl enable docker
sudo systemctl start docker

Jetzt ist Docker grundsätzlich installiert. Zur einfacheren bzw. automatisierten Einrichtung von Containern werden wir jetzt noch Docker-Compose hinzufügen.

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Nach der Installation müssen wir Docker-Compose noch benötigte Rechte zum ausführen einräumen und verlinken den Ordner.

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Als letzten Schritt für die Docker-Installation, erlauben wir Docker noch mit dem angelegten User „admin“ ausgeführt zu werden um so die eingestellten Rechte nutzen zu können.

sudo usermod -a -G docker admin

4. Portainer installieren und einrichten

Wir installieren Portainer als eigenen Docker-Container, welcher den internen Port 8000 auf den Port 9000 unseres Proxmox-Containers umgeleitet bekommt.

sudo docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer-ce:latest

Nach der Installation können wir über die in Schritt 1 vergebene IP-Adresse des Proxmox-Containers in Verbindung mit dem oben angegebenen Port (Hier 9000) die Web-GUI aufrufen um die Installation abzuschließen.

Hierzu öffnen wir ein Browserfenster und geben „http://<IP>:<PORT>“ an. In meiner Instanz sieht das dann wie folgt aus: „http://192.168.200.10:9000“.

Wir werden automatisch auf die Erststartseite umgeleitet, wo wir einen User „admin“ und ein Passwort vergeben müssen. Wichtig ist, dass der hier angelegte User keinen Bezug zu dem in Schritt 2 angelegten User hat, auch wenn diese beide „admin“ heißen. Somit sollten auch die Passwörter unterschiedlich gesetzt werden.

Nach einem Klick auf „Create user“ ist die Installation erfolgreich abgeschlossen.


Beitrag veröffentlicht

in

, ,

von

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert