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:
- Abhängigkeiten installieren
- Zusätzliche Konfigurationen herunterladen
- Conmon (Container-Überwachung) installieren
- CNI (Container Network Interface) Plugins installieren
- Runc OCI Container Runtime installieren
- 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