„Quick Learning Docker“ ist eine Waffe, die das Zeitalter der Containerisierung einläutet

Einführung

Hintergrund und Überblick

Docker ist eine Open-Source-Plattform zum Erstellen und Verwalten von Anwendungscontainern. Es bietet eine leichte und portable Containerisierungslösung, die es Entwicklern ermöglicht, Anwendungen zusammen mit ihren Abhängigkeiten zu paketieren und sie in verschiedenen Umgebungen bereitzustellen.

Hintergrund

Bei der herkömmlichen Softwareentwicklung müssen Anwendungen häufig auf unterschiedlichen Betriebssystemen und Umgebungen bereitgestellt und ausgeführt werden. Dies führt zu vielen Problemen, wie z. B. Kompatibilitätsproblemen zwischen Anwendungen und abhängigen Bibliotheken oder Laufzeitumgebungen, Komplexität im Bereitstellungsprozess, Ressourcenverschwendung usw. Um diese Probleme zu lösen, wurde die Containerisierungstechnologie entwickelt.

Die Entstehung von Docker lässt sich bis ins Jahr 2013 zurückverfolgen. Es wurde auf Basis der Linux-Container-Technologie (LXC) und der File System Layer Union Mount-Technologie (UnionFS) entwickelt. Durch den Einsatz der Containerisierungstechnologie kann Docker die Virtualisierung auf Betriebssystemebene realisieren, sodass verschiedene Anwendungen denselben Betriebssystemkernel gemeinsam nutzen können, wodurch eine effizientere Ressourcennutzung und eine schnellere Startzeit gewährleistet werden.

Überblick

Das Kernkonzept von Docker ist der Container (Container), ein unabhängiges und ausführbares Softwarepaket, das alle zum Ausführen der Anwendung erforderlichen Komponenten und Konfigurationen enthält. Jeder Container ist voneinander isoliert, verfügt über ein eigenes Dateisystem, einen eigenen Prozessraum und eine eigene Netzwerkschnittstelle und beeinflusst sich nicht gegenseitig.

Im Vergleich zur herkömmlichen virtuellen Maschinentechnologie sind Docker-Container leichter und schneller. Eine virtuelle Maschine muss eine vollständige Instanz eines Betriebssystems auf jedem Betriebssystem ausführen, während ein Container nur die erforderlichen Komponenten und Anwendungen ausführen muss. Dadurch haben Container einen geringeren Leistungsaufwand und einen geringeren Ressourcenverbrauch. Darüber hinaus kann der Image-Mechanismus von Docker die schnelle Bereitstellung sowie Erweiterung und Kontraktion von Containern realisieren und bietet so eine effizientere Möglichkeit für die Anwendungsentwicklung, das Testen und die Bereitstellung.

Zusammenfassend lässt sich sagen, dass Docker eine Open-Source-Plattform zum Erstellen, Bereitstellen und Verwalten von Anwendungscontainern ist. Durch die Containerisierungstechnologie wird die Leichtigkeit und Portabilität von Anwendungen realisiert und eine effizientere und bequemere Entwicklung und Bereitstellung ermöglicht.

Der Aufstieg und die Anwendungsszenarien der Containerisierungstechnologie

Containerisierungstechnologie bezieht sich auf das Packen von Anwendungen und all ihren Abhängigkeiten, Konfigurationen und Ressourcen in einer unabhängigen Betriebsumgebung, um einen unabhängigen „Container“ zu bilden, der auf verschiedene Computerplattformen übertragen und ausgeführt werden kann. Mit der Entwicklung von Cloud Computing und Microservices ist die Containerisierungstechnologie nach und nach entstanden und weit verbreitet.

Fügen Sie hier eine Bildbeschreibung ein

Der Aufstieg der Containerisierungstechnologie ist hauptsächlich auf die folgenden Vorteile zurückzuführen:

  • Leicht: Die Containerisierungstechnologie nutzt Virtualisierung auf Betriebssystemebene. Im Vergleich zur herkömmlichen virtuellen Maschinentechnologie sind Container leichter, haben eine schnellere Startgeschwindigkeit und können eine höhere Dichte und eine bessere Nutzung der Hardwareressourcen erreichen.

  • Effizienz: Die Containerisierungstechnologie kann für Isolation sorgen, sodass verschiedene Anwendungen voneinander isoliert sind, ohne sich gegenseitig zu stören. Gleichzeitig können Container für einfache Erweiterungen und Upgrades schnell bereitgestellt, gestartet und gestoppt werden.

  • Portabilität: Die Containerisierungstechnologie verpackt eine Anwendung und alle ihre Abhängigkeiten, sodass sie portiert und auf verschiedenen Computerplattformen ausgeführt werden kann. Entwickler können Container lokal erstellen und sie dann in der Produktion bereitstellen, wodurch die Entwicklungs-, Test- und Bereitstellungskonsistenz verbessert wird.

Die Anwendungsszenarien der Containerisierungstechnologie sind sehr umfangreich und umfassen unter anderem folgende Aspekte:

  • Microservice-Architektur: Die Kombination aus Containerisierungstechnologie und Microservice-Architektur kann eine große Anwendung in mehrere kleine Dienste aufteilen, die jeweils in einem unabhängigen Container ausgeführt werden. Dadurch kann eine bessere Code-Entkopplung, unabhängige Bereitstellung und Erweiterung erreicht und die Elastizität und Wartbarkeit des Systems verbessert werden.

  • Kontinuierliche Integration und kontinuierliche Bereitstellung: Containerisierungstechnologie kann mit kontinuierlichen Integrations- und kontinuierlichen Bereitstellungstools kombiniert werden, um Software-Erstellungs-, Test- und Bereitstellungsprozesse zu automatisieren. Entwickler können Container-Building-Tools verwenden, um Anwendungen und ihre Abhängigkeiten in Container-Images zu packen und automatisierte Tests und Bereitstellungen auf Continuous-Integration-Plattformen durchzuführen, wodurch die Entwicklungseffizienz und Softwarequalität verbessert wird.

  • Cloud-native Anwendungsentwicklung: Cloud-native Anwendungsentwicklung bezieht sich auf eine Möglichkeit, Anwendungen in einer Cloud-Umgebung zu erstellen und zu verwalten. Die Containerisierungstechnologie ist ein wichtiger Bestandteil der Cloud-nativen Anwendungsentwicklung, die eine elastische Erweiterung, Fehlerbehebung und automatische Verwaltung von Anwendungen realisieren und die Stabilität und Zuverlässigkeit von Anwendungen in Cloud-Umgebungen verbessern kann.

Fügen Sie hier eine Bildbeschreibung ein

Die grundlegenden Konzepte und Komponenten von Docker

  1. Container: Ein Container ist ein leichtes, eigenständiges, ausführbares Softwarepaket, das den Code, die Laufzeit, Systemtools, Systembibliotheken und Einstellungen einer Anwendung enthält. Durch die Containerisierung können Anwendungen unabhängig von Umgebungsunterschieden konsistent in allen Umgebungen ausgeführt werden.

  2. Bild: Das Bild ist die Basis des Containers, der ein vollständiges Dateisystem und alles enthält, was zum Ausführen der Anwendung erforderlich ist. Die Spiegelung ist schreibgeschützt und erfolgt in Schichten, wobei jede Schicht einen Teil der Dateisystemänderungen darstellt. Bilder sind an einem Ort namens Docker-Registrierung verfügbar, am häufigsten Docker Hub.

  3. Container-Laufzeit: Die Container-Laufzeit ist für das Erstellen, Starten, Stoppen und Löschen von Containern auf dem Host-Betriebssystem verantwortlich. Die am häufigsten verwendete Container-Laufzeitumgebung für Docker ist Docker, die den gesamten Lebenszyklus von Containern verwaltet.

  4. Docker-Client: Der Docker-Client ist ein Tool für die Interaktion mit Benutzern, das es Benutzern ermöglicht, über die Befehlszeile oder API mit dem Docker-Daemon zu kommunizieren, um Container und Bilder zu verwalten.

  5. Docker-Daemon: Der Docker-Daemon (dockerd) läuft auf dem Host-Betriebssystem und ist für die Verwaltung von Ressourcen wie Images, Containern und Netzwerken verantwortlich. Es interagiert mit dem Docker-Client und antwortet auf Anfragen des Clients.

  6. Docker Compose: Docker Compose ist ein Tool, mit dem Sie mehrere Container, Netzwerke, Volumes usw. mithilfe einer einzigen YAML-Datei definieren können, um das gleichzeitige Starten, Stoppen und Verwalten mehrerer zusammengehöriger Container zu erleichtern.

  7. Docker-Netzwerk: Docker bietet verschiedene Netzwerktreiber, die die Kommunikation zwischen Containern sowie zwischen Containern und dem Host ermöglichen. Diese Netzwerke können Bridge-Netzwerke, Host-Netzwerke, Overlay-Netzwerke usw. sein.

  8. Docker-Volumes: Volumes sind ein Mechanismus zum dauerhaften Speichern von Daten zwischen Containern. Es kann einen Teil des Host-Dateisystems oder ein komplettes Verzeichnis in den Container einbinden, um Datenfreigabe und -persistenz zu erreichen.
    Fügen Sie hier eine Bildbeschreibung ein

Installieren und konfigurieren Sie die Docker-Umgebung

So installieren Sie Docker

Docker unter Linux installieren: In den meisten Linux-Distributionen kann Docker über den Paketmanager installiert werden. Unter Ubuntu kann es beispielsweise installiert werden mit:

sudo apt-get update
sudo apt-get install docker-ce
  • Docker unter macOS installieren: Unter macOS können Sie Docker verwenden, indem Sie Docker Desktop herunterladen und installieren. Es handelt sich um ein grafisches Schnittstellentool, das die Installation und Verwendung von Docker vereinfacht.

  • Installieren Sie Docker unter Windows: Unter Windows können Sie Docker verwenden, indem Sie Docker Desktop für Windows herunterladen und installieren. Es bietet eine grafische Oberfläche zur einfachen Verwaltung und Arbeit mit Docker-Containern.

Grundlegende Verwendung von Docker

Einführung in Docker-Befehlszeilentools

Docker-Version: Zeigen Sie die Versionsinformationen des Docker-Clients und -Servers an.

Docker-Info: Zeigt detaillierte Informationen zum Docker-System an, einschließlich der Anzahl der Images, Container und Speichertreiber.

Docker-Ausführung: Um einen Container auszuführen, können Sie Parameter wie Image, Containername, Netzwerkkonfiguration, Portzuordnung usw. angeben.

Docker Pull: Ziehen Sie das Image vom Remote-Warehouse zum lokalen.

Docker-Build: Erstellen Sie ein neues Image gemäß der Docker-Datei.

Docker Push: Schieben Sie das lokale Image in das Remote-Warehouse.

Docker-Bilder: Listen Sie die lokale Bildliste auf.

Docker PS: Liste der laufenden Container.

Docker Start: Starten Sie einen gestoppten Container.

Docker Stop: Stoppen Sie einen laufenden Container.

Docker-Neustart: Starten Sie einen Container neu.

Docker RM: Entfernen Sie einen oder mehrere Container.

Docker RMI: Entfernen Sie ein oder mehrere Bilder.

docker exec: Führen Sie einen Befehl in einem laufenden Container aus.

Docker-Inspect: Detaillierte Informationen zu einem Container oder Image anzeigen.

Docker-Protokolle: Zeigt die Protokollinformationen des Containers an.

Docker CP: Kopieren Sie Dateien vom Host in den Container oder vom Container auf den Host.

Docker-Netzwerk: Docker-Netzwerke verwalten, Netzwerke erstellen, verbinden, trennen und löschen.

Docker-Volume: Docker-Volumes verwalten, Volumes erstellen, löschen, bereitstellen und die Bereitstellung aufheben.

docker-compose: Verwenden Sie Docker Compose, um mehrere Containeranwendungen zu definieren und zu verwalten.

Dies sind die grundlegenden Docker-Befehlszeilentools, die häufig verwendet werden und mit denen verschiedene Aufgaben wie Image-Verwaltung, Containerbetrieb, Netzwerk- und Volume-Verwaltung erledigt werden können. docker COMMAND --helpDetaillierte Nutzungsanweisungen und Parameterlisten für jeden Befehl können über Befehle abgerufen werden .

Zusammenfassen

Vorteile und Herausforderungen von Docker

Vorteil:

  • Leichter und schneller Start: Docker-Container teilen sich den Kernel mit dem Host, sodass sie schnell starten und weniger Ressourcen verbrauchen.
  • Umgebungskonsistenz: Container können in verschiedenen Umgebungen auf die gleiche Weise ausgeführt werden, wodurch das Problem „funktioniert auf meinem Computer“ vermieden wird.
  • Portabilität: Container enthalten Anwendungen und ihre Abhängigkeiten und können problemlos auf verschiedenen Plattformen und Clouds bereitgestellt werden.
  • Isolation: Container sind voneinander isoliert und ein Problem in einem Container hat keine Auswirkungen auf andere Container.
  • Einfache Erweiterung: Container können je nach Bedarf schnell erweitert werden, um sich an unterschiedliche Ladungen anzupassen.
  • Versionskontrolle: Docker-Images können für einfaches Rollback und Wartung versioniert werden.

Herausforderung:

  • Sicherheit: Container teilen sich den Kernel und die Sicherheitsisolation ist möglicherweise nicht so gut wie die Virtualisierung.
  • Komplexität: Die Bereitstellung von Containern in großem Maßstab erfordert komplexe Arbeiten wie Verwaltung und Orchestrierung.
  • Persistenter Speicher: Container behalten standardmäßig keine Daten bei und für den Umgang mit persistentem Speicher sind zusätzliche Einstellungen erforderlich.
  • Netzwerkkonfiguration: Die Kommunikation zwischen Containern und die Netzwerkkonfiguration können eine komplexe Einrichtung erfordern.
  • Überwachung und Debugging: Überwachung und Debugging in einer Containerumgebung können relativ komplex sein.
  • Ressourcenlimits: Wenn Ressourcenlimits nicht richtig konfiguriert sind, kann ein Container die Leistung anderer Container beeinträchtigen.

Guess you like

Origin blog.csdn.net/wml_JavaKill/article/details/132146309