So installierst du Containerd Container Runtime unter Ubuntu 22.04

Containerd ist eine High-Level-Container-Laufzeitumgebung, die die OCI Image Spec und die OCI Runtime Spec (Open Container Initiative) unterstützt. Bei der Entwicklung von Containerd wurde der Schwerpunkt auf Einfachheit, Robustheit und Portabilität für die Bereitstellung und den Lebenszyklus von Containern gelegt. Es ist so konzipiert, dass es sich leicht in Latge-Systeme wie Docker und Kubernetes einbinden lässt. Unter der Haube verwendet die neue Docker-Version den Containerd für die Verwaltung des Container-Lebenszyklus. Und für Kubernetes kannst du Containerd als Container-Laufzeitumgebung über die CRI verwenden, um den Lebenszyklus von Containern im Kubernetes-Cluster zu verwalten.

In dieser Anleitung wird beschrieben, wie du die Containerd Container Runtime auf einem Ubuntu 22.04 Server installierst. In diesem Lernprogramm werden zwei verschiedene Methoden zur Installation von Containerd vorgestellt: manuell durch Herunterladen des Binärpakets oder durch die Installation von Containerd über das APT-Repository. Am Ende dieses Tutorials hast du eine Container-Umgebung für deine Entwicklung, die du auch als Teil der Kubernetes-Cluster-Installation verwenden kannst.

Voraussetzungen

Um diesem Tutorial zu folgen, brauchst du die folgenden Voraussetzungen

  • Einen Ubuntu 22.04 Server – In diesem Beispiel wird der Server mit dem Hostnamen „server-ubuntu“ verwendet.
  • Einen Nicht-Root-Benutzer mit administrativen Rechten (root/sudo).

Manuelle Installation von Containerd

Im ersten Schritt lernst du, wie du die Containerd Container Runtime manuell per Binärpaket installierst. Das bedeutet, dass du auch einige Komponenten für Containerd selbst installieren musst, darunter das runc und CNI (Container Network Interface) Plugin.

Sowohl Containerd als auch alle seine Komponenten sind in seinem GitHub-Repository verfügbar und können installiert werden.

Um Containerd zu installieren, schaue auf der Containerd GitHub Release-Seite nach, um die neueste Version zu erhalten. Kopiere dann den Link und lade das Binärpaket von Containerd mit„wget“ herunter. Danach entpackst du die Datei in das Verzeichnis„/usr/local„.

Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von Containerd v1.6.8. Lade sie mit dem„wget„-Befehl auf deinen Ubuntu-Server herunter und entpacke sie mit dem„tar„-Befehl in das Verzeichnis„/usr/local„.

wget https://github.com/containerd/containerd/releases/download/v1.6.8/containerd-1.6.8-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz

containerd herunterladen

Runc ist ein Kommandozeilen-Tool, mit dem du Container auf Linux-Systemen gemäß der OCI-Spezifikation (Open Container Initiative) spawnen kannst. Um runc zu installieren, musst du die offizielle runc GitHub Release-Seite besuchen und die neueste Version von runc mit dem wget-Befehl herunterladen.

Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von runc v1.1.3. Lade sie mit dem wget-Befehl herunter und installiere sie wie unten beschrieben.

wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc

Überprüfe nun die runc-Binärdatei mit dem unten stehenden Befehl. Du solltest sehen, dass die runc-Binärdatei im Verzeichnis„/usr/local/sbin“ verfügbar ist.

which runc

runc herunterladen

Jetzt musst du das CNI-Plugin (Container Network Interface) für die Containerd Container Runtime installieren. Das CNI-Plugin bietet eine Netzwerkfunktionalität für Container auf dem Linux-System.

Bevor du das CNI-Plugin herunterlädst, solltest du die offizielle GitHub-Release-Seite besuchen, um die neueste Version des CNI-Plugins zu erhalten.

Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version des CNI-Plugins v1.1.1. Lade es mit dem wget-Befehl herunter (siehe unten).

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

Als Nächstes erstellst du ein neues Verzeichnis„/opt/cni/bin„, das als Zielverzeichnis für die Installation des CNI-Plugins verwendet wird. Entpacke dann das CNI-Plugin mit dem Befehl tar in dieses Verzeichnis.

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

cni plugin herunterladen

Nachdem du alle drei Containerd Container Runtime Komponenten installiert hast, beginnst du mit der Konfiguration des Containerd.

Führe den folgenden Befehl aus, um ein neues Verzeichnis„/etc/containerd“ zu erstellen. Erstelle dann die Standardkonfiguration von Containerd mit dem Befehl„containerd“ wie unten beschrieben.

sudo mkdir -p /etc/containerd/
containerd config default | sudo tee /etc/containerd/config.toml

Containerd-Konfiguration erzeugen

Führe nun den folgenden Befehl aus, um die„SystemdCgroup“ für die Containerd Container-Laufzeit zu aktivieren. Mit diesem Befehl wird die Option„SystemdCgroup = false“ in der Containerd-Konfigurationsdatei „/etc/containerd/config.toml“ durch„SystemdCgroup = true“ ersetzt.

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Führe nun den folgenden Befehl aus, um die systemd-Dienstdatei für Containerd in das Verzeichnis„/etc/systemd/system“ herunterzuladen.

sudo curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service

Lade dann den systemd-Manager neu, um eine neue Servicedatei anzuwenden.

sudo systemctl daemon-reload

Starte und aktiviere schließlich den Dienst „containerd“ mit dem folgenden systemctl-Befehl. Wenn deine Installation erfolgreich war, wirst du sehen, dass keine Fehlermeldung beim Start des„containerd„-Dienstes gefunden wurde.

sudo systemctl start containerd
sudo systemctl enable containerd

containerd-Dienst einrichten

Überprüfe und verifiziere den „containerd“-Dienst mit dem folgenden Befehl. Du solltest sehen, dass der„containerd„-Dienst derzeit den Status„running“ hat und aktiviert ist, d.h. er wird beim Systemstart automatisch ausgeführt.

sudo systemctl status containerd

containerd-Dienst prüfen

Installieren von Containerd über das APT Docker Repository

Jetzt erfährst du, wie du die Containerd Container Runtime über das APT Docker Repository installieren kannst.

Führe zunächst den folgenden Befehl aus, um einige Paketabhängigkeiten zu installieren. Wenn du aufgefordert wirst, die Installation zu bestätigen, gibst du Y ein und drückst ENTER.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Als Nächstes führst du den folgenden Befehl aus, um ein neues Verzeichnis zu erstellen und den GPG-Schlüssel für das Docker-Repository herunterzuladen.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Füge das Docker-Repository mit dem folgenden Befehl zu deinem System hinzu.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Führe nun den folgenden apt-Befehl aus, um den Paketindex für dein Ubuntu-System zu aktualisieren und aufzufrischen. Installiere dann das Paket„containerd.io“ als Containerd Container Runtime. Die Installation wird automatisch gestartet.

sudo apt update
sudo apt install containerd.io

Nachdem die Installation abgeschlossen ist, starte und aktiviere den Dienst„containerd“ mit dem unten stehenden systemctl-Befehl.

sudo systemctl start containerd
sudo systemctl enable containerd

Überprüfe dann den Dienst„containerd“ mit dem folgenden Befehl. Du solltest sehen, dass der„containerd„-Dienst aktiv ist und läuft.

sudo systemctl status containerd

containerd-Dienst prüfen

Als Nächstes wirst du eine neue Konfigurationsdatei für die Containerd Container Runtime erstellen.

Führe den folgenden Befehl aus, um die Standardkonfiguration aus dem Docker-Repository zu sichern. Anschließend erstellst du mit dem Befehl„containerd“ eine neue Konfigurationsdatei (siehe unten).

sudo mv etc/containerd/config.toml etc/containerd/config.toml.orig
containerd config default | sudo tee /etc/containerd/config.toml

Führe nun den folgenden Befehl aus, um die„SystemdCgroup“ für den Containerd zu aktivieren.

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Als Nächstes musst du das CNI (Container Network Interface) Plugin für die Containerd-Installation über das APT Docker Repository installieren.

Führe den unten stehenden wget-Befehl aus, um das CNI-Plugin herunterzuladen.

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

Erstelle nun mit dem unten stehenden Befehl ein neues Verzeichnis„/opt/cni/bin„. Entpacke dann das CNI-Plugin mit dem tar-Befehl wie unten beschrieben.

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

Führe abschließend den unten stehenden Befehl aus, um den Containerd-Dienst neu zu starten und die neuen Änderungen zu übernehmen.

sudo systemctl restart containerd

Jetzt läuft die Containerd Container-Runtime mit dem CNI-Plugin und der SystemdCgroup.

Mit Containerd über nerdctl kommunizieren

ContaiNERD CTL ist ein Kommandozeilen-Tool zur Verwaltung von Containern für die Containerd Container-Laufzeitumgebung. Es ist kompatibel mit Docker CLI für Docker und hat die gleiche Benutzeroberfläche wie der Befehl „Docker“.

Die nrdctl-Befehlszeile unterstützt auch Docker Compose über den Befehl „nerdctl compose“, unterstützt außerdem den Container-Rootless-Modus, Lazy-Pulling-Images über OverlayBD und Stargz, unterstützt verschlüsselte Images und P2P-Image-Verteilung über IPFS.

Führe den folgenden Befehl aus, um die Binärdatei„nerctl“ herunterzuladen. Entpacke sie dann mit dem Befehl tar in das Verzeichnis„/usr/local/bin„.

wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local/bin nerdctl-0.22.2-linux-amd64.tar.gz

Überprüfe nun die nerdctl-Binärdatei mit dem folgenden Befehl.

which nerdctl

nerdctl installieren

Als Nächstes lernst du, wie du mit dem Befehl „nerdctl“ einen Container mit der Container-Laufzeitumgebung Containerd starten kannst. Das Kommandozeilentool „nerdctl“ ist Docker-kompatibel, d.h. der Befehl zur Verwaltung von Containern ist ähnlich wie der Docker-Befehl.

Starte den neuen Container mit dem Namen„nginx“ mit dem unten stehenden„nerdctl„-Befehl. Der„nginx„-Container wird sowohl für den Container als auch für den Host auf dem Port„80“ laufen und basiert auf dem Image„nginx:alpine„.

sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine

nginx Container mit containerd nerdctl starten

Überprüfe nun den aktuell laufenden Container auf deinem System mit dem unten stehenden Befehl„nerdctl„. Du solltest sehen, dass der„nginx„-Container läuft.

sudo nerdctl ps

Prüfe laufenden Container nerdctl

Als Nächstes überprüfst du die Liste der verfügbaren Container-Images auf deinem System mit dem unten stehenden Befehl. Du solltest sehen, dass das Image„nginx:alpine“ heruntergeladen wurde.

sudo nerdctl images

nerdctl check images

Zuletzt führst du den folgenden curl-Befehl aus, um den„nginx„-Container zu überprüfen. Du solltest die Standardseite index.html des„nginx„-Containers sehen.

curl localhost

Zugang zum nginx Container

Außerdem kannst du die Logs des„nginx„-Containers mit dem folgenden„nerdctl„-Befehl prüfen und verifizieren.

sudo nerdctl logs nginx

nerdctl check logs

Fazit

In diesem Lernprogramm hast du zwei Methoden kennengelernt, um die Containerd Container Runtime zu installieren. Du hast gelernt, wie du Containerd manuell installierst, indem du das Container-Binärpaket herunterlädst, und wie du Containerd über das APT-Docker-Repository installierst.

Schließlich hast du gelernt, wie du das Kommandozeilentool nerdctl installierst und wie du nerdctl für die Verwaltung von Containern, die unter der Containerd-Laufzeitumgebung laufen, grundsätzlich verwendest. Du bist jetzt auch in der Lage, den Kubernetes-Cluster mit der Containerd Container-Laufzeitumgebung einzurichten.

Das könnte dich auch interessieren …