Docker-Tutorial für Anfänger: Grundlagen, Architektur, Container

⚡ Intelligente Zusammenfassung

Docker ist eine Containerisierungsplattform, die Anwendungen und deren Abhängigkeiten in portable, schlanke Container verpackt. Diese Übersicht erklärt die Docker-Architektur und die Installation. Ubuntu, wichtige Befehle und wie sich Container von herkömmlichen virtuellen Maschinen unterscheiden, um eine schnellere Softwarebereitstellung zu ermöglichen.

  • 🐳 Containerisierung: Docker virtualisiert auf Betriebssystemebene, sodass Container den Host-Kernel gemeinsam nutzen und weniger Ressourcen verbrauchen als virtuelle Maschinen.
  • 🧱 ArchiStruktur: Die Docker-Engine (dockerd), Images, Registries und Container bilden die Client-Server-Architektur, die jedem Docker-Workflow zugrunde liegt.
  • 📦 Bilder und Container: Ein Image ist eine schreibgeschützte Vorlage, während ein Container eine laufende Kopie ist, und ein Image kann viele Container starten.
  • 🗄️ Register: Docker Hub speichert öffentliche und private Images und bietet Ihnen Millionen von sofort einsatzbereiten Images zum Herunterladen und Ausführen.
  • ⚙️ Installation: On Ubuntu Sie fügen das Docker-APT-Repository und den GPG-Schlüssel hinzu und installieren dann das docker-ce-Paket mit apt-get.
  • Kernbefehle: Verwalten Sie Container mit docker pull, run, start, stop, ps, stats und images über die Kommandozeile.

Docker-Tutorial für Anfänger: Architektur, Installation usw. Ubuntuund grundlegende Containerbefehle

Docker ist eine der beliebtesten Containerisierungsplattformen, die in modernen Umgebungen eingesetzt wird. DevOps und Cloud-Workflows. Dieses Docker-Tutorial für Anfänger erklärt, was Docker ist, wie die Docker-Architektur funktioniert und wie man Docker installiert. Ubuntuund die grundlegenden Befehle zur Verwaltung von Images und Containern.

Was ist Docker?

Docker Docker ist eine Softwareentwicklungsplattform für Virtualisierung, die es ermöglicht, mehrere Betriebssysteme auf demselben Host auszuführen. Sie hilft Ihnen, Infrastruktur und Anwendungen zu trennen und so Software schnell bereitzustellen. Im Gegensatz zu Hypervisoren, die zur Erstellung virtueller Maschinen (VMs) verwendet werden, virtualisiert Docker auf Systemebene mithilfe von Einheiten, die als Docker-Container bezeichnet werden.

Docker-Container laufen auf dem Host-Betriebssystem, wie in der Abbildung unten dargestellt. Dies verbessert sowohl die Effizienz als auch die Sicherheit. Außerdem können Sie auf derselben Infrastruktur mehr Container als virtuelle Maschinen ausführen, da Container weniger Ressourcen benötigen.

Virtualisierung in Docker vs. Hypervisor
Virtualisierung in Docker vs. Hypervisor

Im Gegensatz zu VMs, die direkt mit der Host-Hardware kommunizieren können (z. B. ein Ethernet-Adapter, der weitere virtuelle Adapter erzeugt), laufen Docker-Container in einer isolierten Umgebung auf dem Host-Betriebssystem. Selbst wenn Ihr Host läuft Windows, Du kannst rennen Linux Bilder in Containern mithilfe von Hyper-V, wodurch automatisch eine kleine VM erstellt wird, um das Basis-Image zu virtualisieren.

Nachdem Sie nun wissen, was Docker ist, wollen wir uns die Hauptgründe ansehen, warum Teams sich dafür entscheiden.

Warum Docker verwenden?

Hier sind die wichtigsten Gründe für die Verwendung von Docker:

  • Docker ist eine Software zur Virtualisierung, die es ermöglicht, mehrere gleichzeitige Anwendungen zu erstellen. Betriebssysteme auf demselben Host auszuführen.
  • Docker ist eine Client-Server-Anwendung, das heißt, Clients kommunizieren mit einem Server.
  • Docker-Images fungieren als „Quellcode“ für Container; man verwendet sie zum Erstellen von Containern.
  • Docker unterstützt zwei Arten von Registries: öffentliche und private.
  • Container sind die Organisationseinheiten von Docker. Vereinfacht gesagt ist ein Image eine Vorlage und ein Container eine Kopie dieser Vorlage, sodass Sie mehrere Container vom selben Image ausführen können.

Diese Vorteile ergeben sich aus der Architektur von Docker. Im Folgenden werden die Docker-Architektur und ihre Kernkomponenten detailliert erläutert.

Docker Architektur

In diesem Docker-Container-Tutorial wollen wir uns nun die Hauptkomponenten der Docker-Architektur ansehen.

Docker ArchiArchitekturkomponenten: Engine, Images, Registries und Container

Docker Architektur

Docker-Engine

Docker ist eine Client-Server-Anwendung. Das bedeutet, dass Clients Anfragen an einen Server weiterleiten. Der Docker-Daemon, genannt dockerd, ist die Docker-Engine, die den Server repräsentiert. Daemon und Clients können auf demselben oder einem entfernten Host ausgeführt werden und kommunizieren über eine Kommandozeilen-Client-Anwendung und eine vollständige Docker-Datei. REST-konforme API das mit dockerd interagiert.

Docker-Images

Docker-Images sind der „Quellcode“ für unsere Container; wir verwenden sie, um Container zu erstellen. Images können Software vorinstalliert enthalten, was die Bereitstellung beschleunigt. Sie sind portabel, und Sie können bestehende Images verwenden oder eigene erstellen.

Docker-Register

Docker speichert die von uns erstellten Images in Registries. Es gibt öffentliche und private Registries. Docker verfügt über eine öffentliche Registry namens Docker-HubDort können Sie auch Bilder privat speichern. Docker Hub bietet Millionen von Bildern, die Sie sofort verwenden können.

Docker Container

Container sind die Organisationseinheiten von Docker und eines seiner Grundkonzepte. Wenn wir ein Image erstellen und ausführen, läuft es innerhalb eines Containers. Die Analogie zum Container wird aufgrund der Portabilität der darin laufenden Software verwendet: Sie lässt sich verschieben, „transportieren“, modifizieren, verwalten, erstellen oder löschen, genau wie Frachtschiffe echte Container transportieren.

Vereinfacht ausgedrückt ist ein Bild eine Vorlage und ein Container eine Kopie dieser Vorlage. Sie können mehrere Container (Kopien) desselben Bildes haben.

Das Zusammenspiel dieser verschiedenen Komponenten veranschaulicht die Funktionsweise der Docker-Containertechnologie. Befehle wie `docker pull` und `docker run`, die wir später behandeln, ermöglichen die Steuerung dieses Workflows.

Mit Blick auf die Architektur installieren wir nun Docker, damit Sie diese Komponenten selbst ausprobieren können.

So installieren Sie Docker unter Linux/Ubuntu

Nachfolgend finden Sie eine schrittweise Anleitung zur Docker-Installation unter Linux/Ubuntu:

Schritt 1) Zur Installation von Docker benötigen Sie die DEB-Pakete des Docker-Teams. Zunächst einige Voraussetzungen Ubuntu Es werden Pakete benötigt. Verwenden Sie den folgenden Befehl, um sie zu installieren.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*Das Zeichen „\“ ist nicht erforderlich, es wird für die neue Zeile verwendet. Wenn Sie möchten, können Sie den Befehl auch ohne die Verwendung von „\“ in nur einer Zeile schreiben.

Schritt 2) Fügen Sie den offiziellen Docker-GPG-Schlüssel mit dem Fingerabdruck hinzu. Verwenden Sie den folgenden Docker-Befehl, um den GPG-Schlüssel einzugeben.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Schritt 3) Fügen Sie als Nächstes das Docker APT-Repository mit dem folgenden Befehl hinzu.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Möglicherweise werden Sie aufgefordert, die Hinzufügung des Repositorys und die automatische Hinzufügung des GPG-Schlüssels zu Ihrem Host zu bestätigen. Der Befehl `lsb_release` sollte die entsprechenden Felder ausfüllen. Ubuntu Distributionsversion Ihres Hosts.

Schritt 4) Nach dem Hinzufügen des GPG-Schlüssels aktualisieren Sie die APT-Quellen mit dem folgenden Docker-Befehl.

$ sudo apt-get update

Sie können nun das Docker-Paket selbst installieren.

Schritt 5) Sobald die APT-Quellen aktualisiert sind, beginnen Sie mit der Installation der Docker-Pakete auf Ubuntu mit dem folgenden Docker-Befehl.

$ sudo apt-get install docker-ce

Der obige Befehl installiert Docker und weitere benötigte Pakete. Vor Docker 1.8.0 hieß das Paket lxc-docker, und zwischen Docker 1.8 und 1.13 hieß es docker-engine.

Anmerkungen: Docker für Windows erfordert Windows 10 Pro oder Enterprise Version 14393, oder Windows Server 2016 RTM, zum Ausführen.

So verwenden Sie Docker mit grundlegenden Docker-Befehlen

Hier erfahren Sie, wie Sie Docker mit einigen grundlegenden Docker-Befehlen verwenden.

Der grundlegendste Befehl, den Sie nach der Installation von Docker ausführen sollten, ist, wie bereits erwähnt, docker info.

$ sudo docker info

Sie sollten ein Ergebnis erhalten, das in etwa dem folgenden entspricht.

Docker mit grundlegenden Docker-Befehlen verwenden und die Ausgabe von docker info anzeigen

Wie im obigen Docker-Beispiel gezeigt, können wir Informationen über Docker-Container einsehen: wie viele laufen, pausiert oder gestoppt sind und wie viele Images heruntergeladen wurden. Laden wir nun unser erstes Image herunter.

$ sudo docker pull alpine

Mit diesem Befehl weisen wir Docker an, das Image alpine herunterzuladen und es aus der öffentlichen Registry in der standardmäßig eingestellten neuesten Version zu beziehen.

*alpine ist ein minimales Docker-Image auf Basis von Alpine Linux mit vollständigem Paketindex und nur 5 MB Größe.

Wenn wir das Image als Container ausführen möchten, verwenden wir den folgenden Befehl.

$ sudo docker run -i -t alpine /bin/bash

Der Befehl führt uns direkt zum Alpine-Terminal. Die Option `-i` hält die Standardeingabe (STDIN) des Containers geöffnet, auch wenn Sie nicht mit ihm verbunden sind. Diese permanente Standardeingabe ist die eine Hälfte dessen, was für eine interaktive Shell benötigt wird. Die Option `-t` ist die andere Hälfte und weist Docker an, dem Container ein Pseudo-TTY zuzuweisen. Zusammen ermöglichen sie uns eine interaktive Shell im neuen Container. Wir beenden den Container mit dem einfachen Befehl `exit`.

In diesem Docker-Grundlagen-Tutorial können wir nun versuchen, Folgendes auszuführen: Ubuntu Bild.

$ sudo docker run -it ubuntu /bin/bash

Docker prüft, ob das Image lokal vorhanden ist. Falls nicht, wird es automatisch aus der Image-Bibliothek heruntergeladen. Wir haben also wieder eine interaktive Shell geöffnet. Container können wir beim Start auch benennen.

$ sudo docker run –-name our_container -it ubuntu /bin/bash

Dann beenden wir das Programm wieder. Wir können einen zuvor erstellten Container auch ohne interaktive Shell ausführen.

$ sudo docker start container_name

Und wir stoppen den Container, indem wir docker stop container_name eingeben.

$ sudo docker stop container_name

Um alle laufenden Container anzuzeigen, führen wir einfach folgenden Befehl aus.

$ docker ps

Für alle Container fügen wir am Ende desselben Befehls „-a“ hinzu, z. B. docker ps -a. Dieser Befehl zeigt die Container-ID, das verwendete Image, das Erstellungsdatum, den Ausführungsstatus, die freigegebenen Ports und einen zufällig generierten Namen zur einfacheren Verwaltung an.

Wenn wir Container ausführen, möchten wir oft wissen, wie viele Ressourcen sie verbrauchen. Zu diesem Zweck können wir den folgenden Befehl verwenden.

$ docker stats

Sie können auch sehen, welche Bilder Sie lokal heruntergeladen haben, sowie Informationen darüber.

$ sudo docker images

Der Befehl im obigen Docker-Beispiel zeigt jedes Docker-Image mit einem Tag an, der die Image-Version, eine eindeutige Image-ID, das Erstellungsdatum und die Image-Größe angibt.

Um zu verstehen, warum Container eine so große Verbesserung darstellen, hilft es, sich anzusehen, wie sich die Virtualisierung entwickelt hat.

Was ist Virtualisierung?

Früher war die Bereitstellung eines Dienstes langsam und mühsam. Entwickler schrieben Code, und das Betriebsteam installierte ihn anschließend auf den physischen Servern. Dabei mussten sie Bibliotheksversionen, Patches und Compiler im Auge behalten, damit der Code funktionierte. Traten Fehler auf, begann der Prozess von Neuem: Die Entwickler behoben das Problem, und das Betriebsteam stellte den Dienst erneut bereit.

Mit der Entwicklung von Hypervisoren verbesserte sich die Situation. Hypervisoren führen mehrere Prozesse gleichzeitig aus. virtuelle Maschinenoder VMs auf demselben Host, die laufen oder ausgeschaltet sein können. VMs reduzierten die Wartezeit für die Codebereitstellung und Fehlerbehebung erheblich, aber der eigentliche Durchbruch gelang mit Docker-Containern.

Die Popularität von Docker wird auch durch Orchestrierungstools vorangetrieben, die Container in großem Umfang verwalten, wie zum Beispiel KubernetesBevor wir fortfahren, hier eine kurze Übersicht der wichtigsten Docker-Befehle.

Wichtige Docker-Befehle

Nachfolgend sind die wichtigen Docker-Befehle aufgeführt:

Befehl Beschreibung
Dockerinfo Informationskommando
Docker ziehen Laden Sie ein Bild herunter
Docker run -i -t Bildname /bin/bash Image als Container ausführen
Docker startet unseren_Container Container starten
Docker stoppt Containername Behälter stoppen
Docker ps Liste aller laufenden Container
Docker-Statistiken Containerinformationen
Andockbilder Liste der heruntergeladenen Bilder
Docker-Bereinigung Töte alle laufenden Container.

Lesen Sie auch diese Texte. Fragen und Antworten zum Docker-Vorstellungsgespräch sowohl für Berufsanfänger als auch für erfahrene Fachkräfte.

Häufig gestellte Fragen

Ein Docker-Container nutzt den Kernel des Host-Betriebssystems und isoliert nur die Anwendung. Dadurch ist er ressourcenschonend und startet in Sekundenschnelle. Eine virtuelle Maschine hingegen bündelt ein vollständiges Gastbetriebssystem, was sie größer, langsamer beim Start und ressourcenintensiver macht.

Eine Dockerfile ist ein einfaches Textskript mit Anweisungen wie FROM, RUN, COPY und CMD. Docker liest diese Anweisungen, um automatisch ein Image zu erstellen. Jede Zeile fügt eine Ebene hinzu, sodass Sie dieselbe Umgebung auf jedem beliebigen Rechner reproduzieren können.

Docker Compose definiert und führt Anwendungen mit mehreren Containern mithilfe einer einzigen YAML-Datei aus. Sie beschreiben jeden Dienst, jedes Netzwerk und jedes Volume einmalig und starten anschließend alles mit dem Befehl `docker compose up`. Es eignet sich ideal für die lokale Entwicklung und das Testen verbundener Dienste.

Docker erstellt und führt einzelne Container aus, während Kubernetes Docker orchestriert viele Container in einem Cluster. Kubernetes bietet automatische Skalierung, Selbstheilung und Lastausgleich. In der Praxis verpackt Docker die Anwendung, und Kubernetes verwaltet sie im Produktivbetrieb.

Docker Engine ist kostenlos und Open Source (Apache-2.0-Lizenz). Docker Desktop ist für Privatnutzer, Bildungseinrichtungen und kleine Unternehmen kostenlos; größere Unternehmen benötigen jedoch ein kostenpflichtiges Abonnement. Docker Hub bietet sowohl kostenlose als auch kostenpflichtige Image-Hosting-Pakete an.

Docker läuft nativ unter Linux und wird unterstützt auf Windows und macOS über Docker Desktop. Windows Docker verwendet auf dem Mac eine schlanke virtuelle Maschine, um den für Container benötigten Linux-Kernel auszuführen. Die meisten Container-Images basieren auf Linux.

KI-Assistenten generieren Dockerfiles, docker-compose-Dateien und CLI-Befehle anhand von Eingabeaufforderungen in natürlicher Sprache. Sie lesen außerdem Build-Logs und Container-Fehler, erklären die Ursache und schlagen Lösungen vor. Überprüfen Sie die generierte Konfiguration vor der Ausführung stets auf korrekte Image-Tags, Pfade und Sicherheitseinstellungen.

Ja. GitHub-Copilot ChatGPT kann Dockerfiles und Compose-Dateien anhand eines kurzen Kommentars oder einer Beschreibung erstellen. Das beschleunigt die Arbeit mit Boilerplate-Code, aber Sie sollten die Basis-Images, Versionen und Best Practices überprüfen, da die generierten Code-Snippets möglicherweise veraltete Standardeinstellungen verwenden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: