So installierst du Podman aus dem Quellcode unter Ubuntu

Podman ist eine Container-Laufzeitumgebung, die ähnliche Funktionen wie Docker bietet. Sie ist Teil der libpod-Bibliothek und kann zur Verwaltung von Pods (Kubernetes-Terminologie), Containern, Container-Images und Container-Volumes verwendet werden. Podman unterscheidet sich stark von Docker, da es eine Client-Server-Architektur verwendet und einen Docker-Daemon benötigt, um zu laufen, während Podman keinen Daemon benötigt und auch ohne Root-Rechte problemlos ausgeführt werden kann.

In diesem Tutorial zeigen wir dir, wie du Podman manuell aus dem Quellcode auf einem Ubuntu-Server installierst. Wir werden alle Abhängigkeiten installieren, die für die Podman-Installation benötigt werden, einschließlich conmon (Container Monitoring), CNI (Container Network Interface) Plugins und Runc, die OCI-konforme Laufzeitumgebung.

Voraussetzung

  • Ubuntu 18.04 Server
  • Root-Rechte

Was wir tun werden:

  1. Abhängigkeiten installieren
  2. Zusätzliche Konfigurationen herunterladen
  3. Conmon (Container-Überwachung) installieren
  4. CNI (Container Network Interface) Plugins installieren
  5. Runc OCI Container Runtime installieren
  6. Podman installieren

Schritt 1 – Abhängigkeiten installieren

Als Erstes müssen wir go und einige Paketabhängigkeiten installieren, um Podman und andere Pakete aus dem Quellcode zu bauen.

Bevor du weitermachst, solltest du die Ubuntu-Repositories aktualisieren und das System upgraden.

sudo apt update
sudo apt upgrade

Installiere nun go und alle abhängigen Pakete mit dem folgenden apt-Befehl.

sudo apt install -y btrfs-tools git golang-go go-md2man iptables libassuan-dev libdevmapper-dev libglib2.0-dev libc6-dev libgpgme-dev libgpg-error-dev libprotobuf-dev libprotobuf-c-dev libostree-dev libseccomp-dev libselinux1-dev pkg-config

Warte, bis alle Pakete installiert sind.

Schritt 2 – Zusätzliche Konfiguration herunterladen

Nachdem wir die Podman-Pakete installiert haben, müssen wir das Container-Verzeichnis „/etc/containers“ erstellen und einige Konfigurationen in dieses Verzeichnis herunterladen.

Führe den folgenden Befehl aus, um das Container-Verzeichnis „/etc/containers“ zu erstellen.

sudo mkdir -p /etc/containers

Danach lädst du die Containerregistrierungen und die Richtlinienkonfiguration mit den unten stehenden curl-Befehlen herunter.

sudo curl https://raw.githubusercontent.com/projectatomic/registries/master/registries.fedora -o /etc/containers/registries.conf
sudo curl https://raw.githubusercontent.com/containers/skopeo/master/default-policy.json -o /etc/containers/policy.json

Mehr Details zu den einzelnen Konfigurationen.

registries.conf – Sie kann verwendet werden, um die Container-Images-Registry zu definieren. Standardmäßig wird der Podman Container-Images auf der Grundlage dieser Datei und von Images-Registries wie docker.io, registry.fedoraproject.org und registry.access.redhat.com abrufen und herunterladen.

policy.json – Sie ist Teil des „skopeo“-Projekts und kann für verschiedene Operationen mit Container-Images und Image-Repositories verwendet werden.

Schritt 3 – Installiere Conmon Container Monitoring

Conmon oder Container Monitoring ist ein Teil des CRI-O-Projekts, das zur Überwachung von Containern, zur Protokollierung des Containerprozesses, zum Serven und Anhängen von Clients und zur Erkennung von OOM-Situationen (Out Of Memory) verwendet werden kann. Podman verwendet conmon zur Überwachung von Containern, jeder Container hat conmon container monitoring.

In diesem Schritt werden wir conmon aus dem CRI-O-Quellcode bauen und installieren. Aber zuerst müssen wir das Projektverzeichnis für den go-Pfad erstellen und definieren.

Standardmäßig wird bei go 1.8+ das Verzeichnis „~/go“ als „$GOPATH“-Projektverzeichnis verwendet. Erstelle es also mit dem folgenden Befehl.

export GOPATH=~/go
mkdir -p $GOPATH

Danach lädst du den CRI-O-Quellcode in das ‚$GOPATH‘-Projektverzeichnis herunter.

git clone https://github.com/kubernetes-sigs/cri-o $GOPATH/src/github.com/kubernetes-sigs/cri-o

Gehe in das CRI-O-Projektverzeichnis.

cd $GOPATH/src/github.com/kubernetes-sigs/cri-o

Erstelle und installiere nun das Dienstprogramm conmon mit den folgenden Befehlen.

mkdir bin
make bin/conmon
sudo install -D -m 755 bin/conmon /usr/libexec/podman/conmon

Dadurch wird das conmon-Dienstprogramm im Verzeichnis „/usr/libexec/podman“ installiert. Überprüfe es mit dem folgenden Befehl.

/usr/libexec/podman/conmon --help

Das Ergebnis wird dir wie folgt angezeigt.

Schritt 4 – CNI (Container Network Interface) Plugins installieren

In diesem Schritt installieren wir manuell aus dem Quellcode die Standard-Netzwerk-Plugins für Linux-Container CNI (Container Network Interface) Plugins.

Lade den Quellcode der CNI-Plugins in das Projektverzeichnis „$GOPATH“ herunter und gehe dann in dieses Verzeichnis.

git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins

Danach baust du die CNI-Plugins mit Hilfe des Build-Skripts speziell für das Linux-System.

./build_linux.sh

Sobald dies abgeschlossen ist, erstellst du ein neues Verzeichnis „/usr/libexec/cni“ und verschiebst alle CNI-Binärplugins in dieses Verzeichnis.

sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni

Als Nächstes müssen wir das CNI-Konfigurationsverzeichnis erstellen und das Beispiel der CNI-Konfiguration für Podman herunterladen.

Erstelle ein neues Verzeichnis „/etc/cni/net.d“ und lade die CNI-Konfiguration mit den folgenden Befehlen in dieses Verzeichnis herunter.

mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | tee /etc/cni/net.d/99-loopback.conf

Damit ist die Installation der CNI-Plugins abgeschlossen.

Du kannst alle verfügbaren Plugins im Verzeichnis ‚/usr/libexec/cni‘ überprüfen.

ls -lah /usr/libexec/cni

Schritt 5 – Runc OCI Container Runtime installieren

Runc ist die OCI-Container-Laufzeitumgebung, die zum Spawnen und Ausführen von Containern verwendet werden kann, während Podman zum Starten von Containern eingesetzt wird.

In diesem Schritt werden wir die Runc OCI Runtime aus dem Quellcode installieren. Dazu müssen wir die Runc-Quellcodes in das Projektverzeichnis „$GOPATH“ herunterladen.

Lade den Runc-Quellcode in das Projektverzeichnis „$GOPATH“ herunter und öffne es.

git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc

Erstelle und installiere die Runc OCI-Laufzeitumgebung mit dem folgenden Befehl.

make BUILDTAGS="seccomp"
sudo cp runc /usr/bin/runc

Sobald die Installation abgeschlossen ist, überprüfe die Runc OCI Container-Runtime mit dem folgenden Befehl.

runc --help

Das Ergebnis wird dir wie unten dargestellt angezeigt.

Schritt 6 – Podman installieren

Lade den Podman-Quellcode in das Projektverzeichnis „$GOPATH“ herunter und gehe dorthin.

git clone https://github.com/containers/libpod/ $GOPATH/src/github.com/containers/libpod
cd $GOPATH/src/github.com/containers/libpod

Erstelle und installiere Podman, indem du den folgenden Befehl ausführst.

make
sudo make install PREFIX=/usr

Sobald die Installation abgeschlossen ist, führe die folgenden Podman-Befehle aus.

podman version
podman info

Dabei werden dir die Podman-Version und die Installationsumgebung angezeigt.

Testen, um ein Container-Image zu ziehen.

podman search alpine

podman pull alpine
podman images

Testen, um einen Container zu starten.

podman run --net host --rm -ti alpine echo 'Hello Podman'

Damit ist die Installation und Konfiguration von Podman auf Ubuntu 18.04 erfolgreich abgeschlossen.

Podman verwenden

Eine ausführliche Anleitung, wie du mit Podman Images, Volumes und Container erstellst, findest du hier: Erste Schritte mit Podman: Verwalten von Images, Containern und Volumes

Referenz

Das könnte dich auch interessieren …