Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Ist Docker ein Container?

Ist Docker ein Container?

WBOY
WBOYOriginal
2022-06-17 10:32:517579Durchsuche

Docker ist kein Container; ein Container ist eine Standardeinheit zum Verpacken von Code und der gesamten abhängigen Software, die für die Entwicklung, Bereitstellung und Bereitstellung verwendet wird, sodass Anwendungen schnell und zuverlässig von einer Umgebung in eine andere ausgeführt werden können, während Docker ein Container ist Technologie Eine Implementierung ist eine Open-Source-Anwendungscontainer-Engine, die zur Verwaltung von Containern verwendet wird.

Ist Docker ein Container?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.

Docker ist kein Container

Die Beziehung zwischen Docker und Containern

Wenn es um Container geht, fällt mir als Erstes Docker ein, aber Container sind nicht dasselbe wie Docker ist nur eine Implementierung der Container-Technologie, die zur Verwaltung von Containern verwendet wird, genau wie VMware eine Implementierung virtueller Maschinen ist. Neben Docker gibt es auch Container-Technologie-Implementierungen wie LXC/LXD und rkt, aber Docker ist die bekannteste.

Was ist ein Container?

Dockers offizielle Erklärung zu Containern: Ein Container (Container) besteht in einem Satz darin, Software in standardisierte Einheiten für Entwicklung, Lieferung und Bereitstellung zu packen. Container sind Standardeinheiten zum Verpacken von Code und der gesamten abhängigen Software, sodass Anwendungen schnell und zuverlässig von einer Umgebung in eine andere ausgeführt werden können. Ein Container-Image ist ein leichtes, ausführbares eigenständiges Softwarepaket, das alles enthält, was zum Ausführen der Software erforderlich ist: Code, Laufzeitumgebung, Systemtools, Systembibliotheken und Einstellungen. Containerisierte Software ist für Linux- und Windows-basierte Anwendungen verfügbar und läuft konsistent in jeder Umgebung. Container verleihen der Software Unabhängigkeit, indem sie sie von ihrer Umgebung isolieren und sicherstellen, dass sie in unterschiedlichen Umgebungen wie Entwicklungs- und Staging-Umgebungen einheitlich läuft.

Container sind auch eine Technologie, die zum Verpacken von (kompiliertem) Anwendungscode und Abhängigkeiten verwendet wird, die für die Laufzeit erforderlich sind. Jede Containerausführung kann wiederholt werden, und die Standardisierung durch die Einbeziehung von Abhängigkeiten bedeutet, dass Sie in jeder Umgebung, in der Sie den Container ausführen, das gleiche Verhalten erhalten. Container trennen Anwendungen von der Host-Infrastruktur und erleichtern so die Bereitstellung in verschiedenen Cloud- und Betriebssystemumgebungen. Container sind unveränderlich und der Code eines laufenden Containers kann nicht geändert werden. Wenn eine Containeranwendung geändert werden muss, muss ein neuer Container erstellt werden, der die Änderungen enthält, und der Container muss aus dem aktualisierten Image neu erstellt werden.

Container-Technologie isoliert und kontrolliert im Wesentlichen Systemressourcen, sodass der Containerprozess in seinem eigenen unabhängigen Namensraum ausgeführt werden kann. Container können über ein eigenes Dateisystem, eine eigene Netzwerkkonfiguration, einen eigenen Prozessraum usw. verfügen. Die Prozesse im Container werden in einer isolierten Umgebung ausgeführt. Sie werden so verwendet, als würden sie in einem vom Host unabhängigen System ausgeführt, was den Container auch sehr praktisch macht . von Läufen überall.

Vorteile von Containern

Die Hauptvorteile von Containern lassen sich wie folgt zusammenfassen:

  • Einfach und effizient zu verwenden: Im Vergleich zu Images virtueller Maschinen sind Container-Images einfacher zu verwenden und effizienter. Container sind klein und schnell zu starten und müssen nicht an externe Infrastrukturumgebungen gebunden werden, wodurch das Konsistenzproblem von der Entwicklungs- bis zur Produktionsumgebung perfekt gelöst wird.

  • Überwachung und Verwaltung: Container sind transparenter als virtuelle Maschinen und erleichtern die Überwachung und Verwaltung. Insbesondere wird der Lebenszyklus des Containerprozesses von der Infrastruktur verwaltet und nicht vom Prozessmanager im Container verborgen. Schließlich wird jede Anwendung in einen Container gepackt, und die Verwaltung der Containerbereitstellung entspricht der Verwaltung der Anwendungsbereitstellung.

  • Kontinuierliche Integration und Bereitstellung: Container beseitigen Umgebungsunterschiede und sorgen für Konsistenz und Standardisierung der Anwendungslebenszyklusumgebung. Entwickler verwenden Images zum Erstellen von Standardentwicklungsumgebungen. Nach Abschluss der Entwicklung können die vollständigen Umgebungs- und Anwendungsimages direkt zum Testen und Freigeben bereitgestellt werden, wodurch der kontinuierliche Integrations-, Test- und Releaseprozess vereinfacht wird.

  • Umgebungsstandardisierung und Versionskontrolle: Basierend auf der vom Container bereitgestellten Umgebungskonsistenz und -standardisierung kann das Container-Image einer Versionskontrolle unterzogen werden, d. Bereitstellung und schnelles einfaches Rollback.

  • Effiziente Ressourcennutzung und -isolierung: Container haben keinen zusätzlichen Overhead durch Hypervisoren und teilen sich das Betriebssystem mit der zugrunde liegenden Ebene. Sie verfügen über eine hervorragende Leistung und eine geringe Systemlast. Sie können mehr Anwendungsinstanzen unter den gleichen Bedingungen ausführen und voll ausnutzen der Systemressourcen. Container verfügen außerdem über gute Ressourcenisolations- und Kontrollfunktionen und können Systemressourcen genau zuweisen, um sicherzustellen, dass sich Anwendungen nicht gegenseitig beeinflussen.

  • Beobachtbar: Zeigt Informationen und Metriken nicht nur vom Betriebssystem, sondern auch von der Anwendung selbst an.

  • Portabilität der Cloud- und Betriebssystemverteilung: Läuft auf Ubuntu, RHEL, CoreOS, physischen Maschinen, GKE und überall sonst.

  • Anwendungszentriert: Von der Bereitstellung von Betriebssystemen auf herkömmlicher Hardware bis zur Bereitstellung von Anwendungen im Betriebssystem.

  • Loose gekoppelte, verteilte, elastische und Microservices: Anwendungen sind in kleinere, unabhängigere Module unterteilt, die dynamisch verwaltet und bereitgestellt werden können, im Gegensatz zu großen monolithischen Programmen, die auf dedizierten Geräten ausgeführt werden.

Was ist Docker?

Docker ist zweifellos führend unter vielen Containertechnologien. Was Docker ist, können wir anhand der folgenden Punkte zusammenfassen:

Docker ist ein Open-Source-Containerprojekt, der Code wird auf GitHub verwaltet, folgt dem Apache 2.0-Protokoll und hat trat Linux bei Die von Mainstream-Betriebssystemen und Cloud-Dienstanbietern unterstützte Stiftung wurde gegründet, um die Open Container Alliance (OCI) zu fördern.

Docker wird mit der Go-Sprache von Google entwickelt und implementiert. Es basiert auf dem Namespace (Namespace), der Kontrollgruppe (Cgroup) und Union FS wie OverlayFS. Es kapselt und isoliert den Prozess, der die Virtualisierung im Betriebssystem darstellt Ebene. Da der isolierte Prozess unabhängig vom Host und anderen isolierten Prozessen ist, wird er auch Container genannt.

Docker wurde ursprünglich auf Basis des Linux-Containers (LXC) implementiert, ersetzte LXC später durch seinen eigenen entwickelten libcontainer und wurde dann zur Verwendung von runc und containerd weiterentwickelt.

Docker bietet eine effiziente, agile und leichte Containerlösung, die Anwendungen innerhalb des Containers schnell und automatisch bereitstellen kann. Sie bietet Ressourcenisolation und Sicherheit für den Container durch die Kerneltechnologie des Betriebssystems, vereinfacht die Containererstellung und -wartung erheblich und unterstützt die Bereitstellung auf -Premise-Umgebungen und mehrere Cloud-Plattformen. Mit anderen Worten: Docker bietet eine Komplettlösung für die Anwendungsentwicklung, -ausführung und -bereitstellung.

runc ist ein Linux-Befehlszeilentool zum Erstellen und Ausführen von Containern gemäß der OCI Container Runtime Specification.

containerd ist ein Daemon, der den Container-Lebenszyklus verwaltet und einen minimalen Satz an Funktionen zum Ausführen von Containern und zum Verwalten von Bildern auf einem Knoten bereitstellt.

Vorteile von Docker

Als aufstrebende Virtualisierungsmethode bietet Docker viele Vorteile im Vergleich zu herkömmlichen Virtualisierungsmethoden. Die spezifische Zusammenfassung lautet wie folgt:

  • Effizientere Nutzung von Systemressourcen: Container erfordern keinen zusätzlichen Overhead wie Hardware-Virtualisierung und die Ausführung eines vollständigen Betriebssystems hat eine höhere Auslastung der Systemressourcen, geringere Anforderungen und kann höhere Ergebnisse erzielen Leistung. Ein Host mit derselben Konfiguration kann mithilfe von Containern eine größere Anzahl von Anwendungen ausführen als virtuelle Maschinen.

  • Schnellere Startzeit: Docker-Containeranwendungen können Startzeiten von Sekunden oder sogar Millisekunden erreichen. Dies spart erheblich Entwicklungs-, Test- und Bereitstellungszeit.

  • Konsistente Laufumgebung: Das Docker-Image bietet eine vollständige Laufzeitumgebung mit Ausnahme des Kernels und stellt so die Konsistenz der Anwendungslaufumgebung sicher, sodass nicht mehr das Problem besteht, dass derselbe Code nicht in einer anderen Umgebung ausgeführt werden kann.

  • Kontinuierliche Bereitstellung und Bereitstellung: Mit Docker können Sie durch die Anpassung von Anwendungsbildern eine kontinuierliche Integration, kontinuierliche Bereitstellung und Bereitstellung erreichen. Entwickler erstellen Images über Dockerfile und führen Integrationstests mit dem Continuous-Integration-System durch. Betriebs- und Wartungspersonal können das Image schnell direkt in der Produktionsumgebung bereitstellen oder es sogar mit dem Continuous-Deployment-System für die automatische Bereitstellung verwenden.

  • Einfachere Migration: Docker gewährleistet die Konsistenz der Ausführungsumgebung und erleichtert so die Migration von Anwendungen zwischen verschiedenen Plattformen, ohne sich Gedanken über Änderungen in der laufenden Umgebung machen zu müssen, die dazu führen, dass die Anwendung nicht ordnungsgemäß ausgeführt wird.

  • Einfachere Wartung und Erweiterung: Die von Docker verwendete mehrschichtige Speicher- und Spiegelungstechnologie erleichtert die Wiederverwendung wiederholter Teile der Anwendung und vereinfacht auch die Wartung und Aktualisierung der Anwendung. Weitere Erweiterung der Spiegelung basierend auf der Basis Spiegel wird auch sehr einfach sein. Docker verwaltet außerdem eine große Anzahl hochwertiger offizieller Bilder, wodurch die Kosten für die Bildproduktion für Anwendungsdienste weiter gesenkt werden.

  • Gute Isolierung: Docker bietet zuverlässige Ressourcenisolierung und Sicherheitsgarantie für Container, sodass Container Systemressourcen genau zuweisen und sicherstellen können, dass sich Anwendungen nicht gegenseitig beeinflussen.

  • Elastische Skalierung: Gut im Umgang mit konzentrierten Serverauslastungsausbrüchen und bei der dynamischen Verwaltung von Anwendungen.

Empfohlenes Lernen: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonIst Docker ein Container?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn