Grundlegende Verwendung von Containerd

1) Grundkenntnisse über Containerd

Ab Version 1.11 von Docker wird die Ausführung von Docker-Containern nicht einfach durch den Docker-Daemon gestartet, sondern durch die Integration mehrerer Komponenten wie Containerd und Runc.

Obwohl das Docker-Daemon-Daemon-Modul ständig überarbeitet wird, haben sich die Grundfunktionen und die Positionierung nicht wesentlich geändert. Es handelte sich immer um eine CS-Architektur. Der Daemon ist für die Interaktion mit dem Docker-Client und die Verwaltung von Docker-Images und -Containern verantwortlich.

Die Komponente containerd ist in der aktuellen Architektur für das Lifecycle-Management der Container auf den Cluster-Knoten verantwortlich und stellt dem Docker-Daemon eine gRPC-Schnittstelle zur Verfügung.

Containerd-shim ist ein Plugin für Containerd, das als Prozessmanager fungiert, Befehle von Containerd empfängt und Prozesse innerhalb des Containers erstellt und verwaltet. Es kann mit Runc zusammenarbeiten, sodass Vorgänge wie das Erstellen, Starten, Stoppen, Anhalten und Fortsetzen von Containern effektiv abgewickelt werden können. Kurz gesagt, die Containererstellung erfolgt durch Containerd-shim.

Wir alle wissen, dass das Erstellen eines Containers eine gewisse Konfiguration von Namespaces und Kontrollgruppen sowie das Mounten des Root-Dateisystems erfordert. Tatsächlich verfügen diese Vorgänge bereits über Standardspezifikationen, nämlich OCI (Open Container Standard).

OCI ist im Wesentlichen ein Spezifikationsdokument, das hauptsächlich den Strukturstandard des Container-Images und den Standard des Containers festlegt, der Betriebsanweisungen wie Erstellen, Starten, Stoppen, Löschen und andere Befehle empfängt. Tatsächlich implementiert Runc den Verwaltungscontainer gemäß verschiedenen Spezifikationen dieser OCI.

Daher wird Containerd-Shim verwendet, um Runc aufzurufen, um den Container zu starten. Nach dem Ausführen des Containers wird Runc direkt beendet und Containerd-Shim wird zum übergeordneten Prozess des Containerprozesses. Er ist für die Erfassung des Status des Containerprozesses verantwortlich und es an Containerd melden. Und nachdem der Prozess mit PID 1 im Container beendet wurde, übernimmt er die Bereinigung des untergeordneten Prozesses im Container, um sicherzustellen, dass kein Zombie-Prozess erscheint.

Containerd ist eine Container-Laufzeitumgebung nach Industriestandard, bei der Einfachheit, Robustheit und Portabilität im Vordergrund stehen. Containerd kann für Folgendes verantwortlich sein:

  • Verwalten Sie den Lebenszyklus von Containern (von der Erstellung bis zur Zerstörung)

  • Containerbilder ziehen/schieben

  • Speicherverwaltung (Verwaltung der Speicherung von Bild- und Containerdaten)

  • Rufen Sie runc auf, um den Container auszuführen (interagieren Sie mit Container-Laufzeiten wie runc).

  • Verwalten Sie Container-Netzwerkschnittstellen und Netzwerke

2) Container-Installation

Die folgenden Schritte dienen zur Installation von Containerd auf Rocky8/RHEL8

Installieren Sie zuerst das Tool yum-utils

yum install -y yum-utils

Konfigurieren Sie das offizielle Yum-Warehouse von Docker. Wenn Sie dies getan haben, können Sie es überspringen

yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo

Containerd installieren

yum install containerd.io -y

Starten Sie den Dienst und stellen Sie ihn so ein, dass er beim Booten automatisch startet

systemctl enable containerdsystemctl start containerd

3) Containerd-Befehlszeilentool ctr

Ctr ist das Befehlszeilentool von Containerd, mit dem Aufgaben in Containerd ausgeführt und verwaltet werden können. ctr wird hauptsächlich für die Entwicklung und das Debuggen verwendet, nicht in der Produktionsumgebung. Die übliche Verwendung ist wie folgt:

Überprüfen Sie die Containerversion

ctr version

Bild ziehen

ctr images pull  docker.io/library/busybox:latest #其中images可以简写为i

Lokale Spiegel auflisten

ctr  images list #或者简写ctr i ls

Tag ändern

ctr i tag  docker.io/library/busybox:latest  busybox:latest

Spiegel löschen

ctr i rm docker.io/library/busybox:latest

Container ausführen

ctr run  -d  busybox:latest busybox

Laufende Container auflisten

ctr containers  list  #或者简写为ctr c  ls

Listen Sie Aufgaben auf

ctr tasks  ls #或者简写ctr t  ls

Befehle im Container ausführen

ctr t exec --exec-id 1860 busybox ls  #1860为任务ID

in den Behälter

ctr t exec -t --exec-id 1860 busybox sh

Container löschen

ctr t kill -s SIGKILL busybox #先杀掉进程ctr c  rm  busybox #再删除容器

Kurz gesagt, es gibt immer noch viele Unterschiede zwischen diesem CTR-Tool und dem Befehlszeilentool von Docker.

 

Ich denke du magst

Origin blog.csdn.net/am_Linux/article/details/130141394
Empfohlen
Rangfolge