containerd (der offizielle Markenname wird in Kleinbuchstaben geschrieben) ist die Container-Laufzeitumgebung von Docker, einer Open-Source-Containerisierungsplattform. Bei Container-Laufzeitumgebungen handelt es sich um Softwarekomponenten, die Container auf einem Host-Betriebssystem ausführen können.
Der Vergleich von containerd mit Docker ist ein wenig so, als würde man einen Turbolader mit einem Motor oder eine Klimaanlage mit einem Haus vergleichen. Es ist kein direkter Vergleich zwischen den beiden möglich, auch wenn sie definitiv miteinander verwandt sind und fast immer zusammen verwendet werden. In der Regel sind sie jedoch nicht austauschbar.
Was ist Docker?
Docker ist mittlerweile zu einem Synonym für den Begriff „Container“ geworden. Allerdings ist Docker selbst kein Container, sondern ein sehr beliebtes Tool bei Entwicklern, um Container zu erstellen, mit ihnen zu arbeiten und sie zu verwalten. Anders ausgedrückt: Es ist eine Container-Engine, also ein System, das es ermöglicht, den in einer bestimmten Computing-Umgebung entwickelten Code in einer anderen Computing-Umgebung zu verwenden. Dadurch ist Docker ein echter Wegbereiter und Unterstützer der Anwendungsentwicklung. Es handelt sich dabei um eine Softwareplattform, die das Erstellen, Ausführen, Verwalten und Verteilen von Anwendungen vereinfacht, indem sie das Betriebssystem des Computers, auf dem sie installiert und ausgeführt wird, virtualisiert.
Container sind portierbare, in sich geschlossene Umgebungen, die von Docker und anderen Container-Engines wie CRI-O, RKT und LXD verwendet werden, um Anwendungen zu verpacken, auszuliefern und auszuführen. Eine Container-Laufzeitumgebung wie beispielsweise die von Docker entwickelte Container-Laufzeitumgebung „containerd“ ist eine Komponente einer Container-Engine. Sie bindet den Container ein und arbeitet mit dem Kernel des Betriebssystems zusammen, um den Containerisierungsprozesses zu starten und zu unterstützen.
Was genau ist containerd?
Bei containerd handelt es sich um eine von Docker entwickelte Container-Laufzeitumgebung, die den Lebenszyklus eines Containers auf einer physischen oder virtuellen Maschine (d. h. einem Host) verwaltet. Sie erstellt, startet, stoppt und vernichtet Container. Darüber hinaus kann sie Container-Images aus Container-Registrys extrahieren, Storage mounten und Netzwerkdienste für einen Container aktivieren.
Im Februar 2019 wurde containerd ein offizielles Projekt innerhalb der Cloud Native Computing Foundation (CNCF), genau wie Kubernetes, Prometheus, Envoy und CoreDNS.
Funktionsweise von containerd
Bei containerd handelt es sich um einen Daemon, also um ein Computerprogramm, das als Hintergrundprozess ausgeführt wird und nicht direkt von einem interaktiven Benutzer gesteuert wird. Es ist sowohl für Linux als auch für Windows verfügbar.
Abbildung 1: Funktionsweise von containerd. Quelle: Docker
containerd verwaltet den gesamten Lebenszyklus von Containern auf seinem Hostsystem – von der Übertragung und Speicherung von Images über die Ausführung und Überwachung von Containern bis hin zu Low-Level-Storage, Netzwerkverbindungen und mehr.
containerd versus CRI-O
CRI-O ist eine Alternative zu containerd und eine weitere High-Level-Container-Laufzeitumgebung, die das Container Runtime Interface (CRI) implementiert. Diese Umgebung extrahiert Container-Images aus Registrys, verwaltet sie auf der Festplatte und startet eine untergeordnete Laufzeitumgebung, um Container-Prozesse auszuführen. Da es sich bei beiden um Container-Laufzeitumgebungen handelt, werden Sie normalerweise keine Container mit CRI-O verwenden, da Sie nur das eine oder das andere benötigen.
Docker versus containerd: Häufig gestellte Fragen
Verwendet Docker immer noch containerd?
Docker hat containerd entwickelt, das jetzt Teil der CNCF ist, einer Organisation, die Kubernetes- und Docker-basierte Implementierungen unterstützt. Docker ist nach wie vor ein unabhängiges Projekt, das containerd als Laufzeitumgebung nutzt.
Kann ich containerd anstelle von Docker verwenden?
Ja. Zwar ist containerd eine Container-Laufzeitumgebung und Docker eine Container-Engine, aber das ist dennoch möglich. Docker ist ein Tool, das die Container-Laufzeitumgebung (in diesem Fall containerd) anweist, einen Container auf Basis des Container-Image zu erstellen. Auch wenn das Host-Betriebssystem kein eigenes Container-Konzept hat, so bietet es doch Funktionen wie Namespaces, cgroups und Dateisystem-Overlays, die einen Container möglich machen. Das bedeutet, dass es möglich wäre, containerd zusammen mit einer anderen Komponente, einer sogenannten Low-Level-Laufzeitumgebung, zu verwenden, um mit dem Kernel des Host-Betriebssystems zu interagieren. So kann ein Container erstellt und dadurch die Funktionalität von Docker übernommen werden.
Ist containerd mit Docker kompatibel?
Ja. Da containerd von Docker entwickelt wurde, ist es uneingeschränkt mit Docker kompatibel.
Kann ich von Docker zu containerd migrieren?
Ja, das ist möglich. Google Cloud stellt eine Dokumentation zur Verfügung, in der die entsprechende Vorgehensweise erläutert wird.
Holen Sie sich Container-Storage-as-a-Service
Container benötigen, wie alles andere auch, Storage. Je flexibler und skalierbarer Ihre Storage-Lösung ist, desto mehr Vorteile können Sie aus Ihrer Container-Nutzung und Ihren Containerisierungsstrategien ziehen.
Mit Container-Storage-as-a-Service für Hybrid Cloud von Pure erhalten Entwickler die Flexibilität der Public Cloud mit der Zuverlässigkeit und Sicherheit der lokalen Infrastruktur. Dies bietet folgende Vorteile:
- Schnellere Entwicklung und Aktualisierung von Unternehmensanwendungen – ganz ohne Kompromisse bei Schutz, Datensicherheit und Unternehmensrichtlinien
- Problemlose Erfüllung der Anforderungen an Skalierbarkeit und Zuverlässigkeit
- Schutz von containerisierten Anwendungen mit optimierter Cloud-nativer Disaster Recovery und Backups für alle Kubernetes-Workloads
Legen Sie noch heute mit Pure los. Kontaktieren Sie uns, um mehr zu erfahren.
Metabeschreibung
Dieser Artikel befasst sich mit den Unterschieden zwischen containerd (einer Container-Laufzeitumgebung von Docker) und der Container-Engine Docker selbst.
Written By: