Docker Stack und Portainer im Proxmox LXC installieren

Moin!

In diesem Beitrag berichte ich über die Installation eines kompletten Docker Stack inklusive Docker compose und Portainer in einem LXC Container. Zusätzlich erkläre ich noch die Vorteile, Portainer in seiner Umgebung zu nutzen.

Anders als viele andere Anleitungen oder How-To’s pflege ich das Docker Repository ein und umgehe damit, die Gefahr eine veraltete Docker Version aus dem Debian Repository auf dem System zu installieren. Besonders Probleme bei Major Versionssprüngen der Distributionen lassen sich ganz oder teilweise umschiffen.

Mit Portainer sind wir in der Lage viele Verwaltungsaufgaben direkt in einem Web UI erledigen zu können. Es können Container, Netzwerke und Volumes erstellt und auch gelöscht werden. Images sind schnell heruntergeladen und auch wieder entfernt. Ganze Docker compose Stacks können bequem per Config Editor erstellt und verwaltet werden. Ein weiteres Feature, welches bei mehreren Docker Hosts einem das Leben deutlich einfacher gestalten kann, ist die Tatsache, dass Portainer über einen Agent miteinander verknüpft werden kann. Bedeutet, es ist nur ein Portainer (Master) Host nötig. Auf allen anderen Hosts wird lediglich der Agent (Slave) installiert, der eine Verbindung zum Master aufbaut. Der Slave kann dann bequem über den Master verwaltet werden. In meinen Augen ein absoluter Gamechanger.

Wir starten mit der Erstellung des Containers. Ich verwende dafür die aktuellste Version des Debian Basis Images, welches Proxmox bereitstellt. Der Container sollte zudem als „unprivileged“ erstellt worden sein. Bei der Installation gehe ich davon aus, dass ihr den LXC Container nach meinem Beispiel konfiguriert habt. Dies ist aufgrund der Basiskonfiguration, die ich tätige nötig. Zudem muss in dem LXC Container unter „Optionen“ -> „Features“ -> der Haken bei „nesting“ gesetzt sein.

Vorraussetzungen um diesen Beitrag umsetzen zu können:

Wir verbinden uns per SSH mit dem „root“ User auf den Container. Im Anschluss führen wir ein Update durch und installieren die benötigten Pakete.

apt update && apt upgrade -y && apt install ca-certificates curl gnupg lsb-release -y

Anschließend installieren wir Docker. Damit wir immer die aktuellste Version von Docker haben, pflegen wir das Repository von Docker ein. Wir laden den Sicherungsschlüssel herunter und erstellen eine source Datei.

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Damit wir keine alten Paketleichen auf dem System haben, deinstallieren wir zunächst die möglicherweise installierten Docker Pakete.

apt purge docker docker.io containerd runc -y

Nun aktualisieren wir die Paketlisten und installieren Docker. Zusätzlich installieren wird das Plugin Docker compose, welches früher manuell als Skript hinzugefügt werden musste.

apt update && apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

Anschließend erstellen wir einen Nutzer, der den Portainer Container startet. Diesen fügen wir der Docker Gruppe hinzu.

adduser portainer
usermod -aG docker portainer

Im letzten Schritt installieren, wechseln wir zu unserem vorher erstellten User. Anschließend installieren wir Portainer-CE zur einfacheren Verwaltung der Container. Dazu legen wir einen neuen Ordner im Homeverzeichnis des Docker Users an und erstellen eine docker-compose.yml Datei.

su portainer
cd /home/portainer/
mkdir portainer && cd portainer/
nano docker-compose.yml
version: '3'
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer-ce
    restart: always
    ports:
      - 9000:9000
      - 8000:8000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data

Jetzt pullen wir das Image und bringen den Container an den Start.

docker compose up -d

Nun könnt ihr das Web UI ansteuern. Das könnt ihr mit ContainerIP:9000 erledigen. Beim erstmaligen Aufrufen des Web UI werdet ihr aufgefordert, einen Admin Account anzulegen. Ist dies geschafft, kann der Host auch schon bequem mit Portainer verwaltet werden.

Grüße gehen aus dem Archiv!

Abonnieren
Benachrichtige mich bei
guest
21 Kommentare
Älteste
Neuste Meist Bewerteste
Inline Feedbacks
Zeige alle Kommentare
21
0
Bitte lasse uns an deinen Gedanken teilhaben und kommentier den Beitrag.x
Cookie Consent mit Real Cookie Banner