Docker für Anfänger: Alles, was Sie wissen müssen

0
200

Docker erstellt gepackte Anwendungen, die als Container bezeichnet werden. Jeder Container bietet eine isolierte Umgebung ähnlich einer virtuellen Maschine (VM). Im Gegensatz zu VMs führen Docker-Container kein vollständiges Betriebssystem aus. Sie teilen den Kernel Ihres Hosts und virtualisieren auf Softwareebene.

Docker-Grundlagen

Docker hat sich zu einem Standardwerkzeug für Softwareentwickler und Systemadministratoren entwickelt. Auf diese Weise können Sie Anwendungen schnell starten, ohne den Rest Ihres Systems zu beeinträchtigen. Sie können einen neuen Dienst mit einem einzigen Docker-Befehl ausführen.

Container kapseln alles, was zum Ausführen einer Anwendung erforderlich ist, von Abhängigkeiten von Betriebssystempaketen bis hin zu Ihrem eigenen Quellcode. Sie definieren die Erstellungsschritte eines Containers als Anweisungen in einem Dockerfile. Docker verwendet das Dockerfile, um ein Image zu erstellen.

Bilder definieren die in Containern verfügbare Software. Dies entspricht ungefähr dem Starten einer VM mit einem Betriebssystem-ISO. Wenn Sie ein Image erstellen, kann jeder Docker-Benutzer Ihre App mit Docker Run starten.

Wie funktioniert Docker?

Container verwenden Kernelfunktionen des Betriebssystems, um teilweise virtualisierte Umgebungen bereitzustellen. Es ist möglich, Container von Grund auf mit Befehlen wie chroot zu erstellen. Dadurch wird ein Prozess mit einem angegebenen Root-Verzeichnis anstelle des System-Roots gestartet. Aber die direkte Verwendung von Kernel-Features ist fummelig, unsicher und fehleranfällig.

Werbung

Docker ist eine Komplettlösung für die Produktion, Verteilung und Nutzung von Containern. Moderne Docker-Releases bestehen aus mehreren unabhängigen Komponenten. Zunächst gibt es die Docker-CLI, mit der Sie in Ihrem Terminal interagieren. Die CLI sendet Befehle an einen Docker-Daemon. Dies kann lokal oder auf einem Remote-Host ausgeführt werden. Der Daemon ist für die Verwaltung von Containern und den Images verantwortlich, aus denen sie erstellt werden.

Die letzte Komponente wird als Container-Laufzeit bezeichnet. Die Laufzeit ruft Kernelfunktionen auf, um Container tatsächlich zu starten. Docker ist mit Laufzeiten kompatibel, die der OCI-Spezifikation entsprechen. Dieser offene Standard ermöglicht die Interoperabilität zwischen verschiedenen Containerisierungstools.

Sie müssen sich bei den ersten Schritten nicht allzu viele Gedanken über das Innenleben von Docker machen. Wenn Sie Docker auf Ihrem System installieren, erhalten Sie alles, was Sie zum Erstellen und Ausführen von Containern benötigen.

Warum verwenden so viele Leute Docker?

Container sind so beliebt geworden, weil sie viele gängige Herausforderungen in der Softwareentwicklung lösen. Die Möglichkeit, einmal zu containerisieren und überall auszuführen, verringert die Lücke zwischen Ihrer Entwicklungsumgebung und Ihren Produktionsservern.

Die Verwendung von Containern gibt Ihnen die Gewissheit, dass jede Umgebung identisch ist. Wenn Sie ein neues Teammitglied haben, muss es nur Docker ausführen, um seine eigene Entwicklungsinstanz einzurichten. Wenn Sie Ihren Dienst starten, können Sie Ihr Docker-Image für die Bereitstellung in der Produktion verwenden. Die Live-Umgebung entspricht genau Ihrer lokalen Instanz und vermeidet “es funktioniert auf meinem Computer” Szenarien.

Docker ist bequemer als eine ausgewachsene virtuelle Maschine. VMs sind Allzwecktools, die entwickelt wurden, um alle möglichen Workloads zu unterstützen. Im Gegensatz dazu sind Container leicht, autark und besser für Wegwerfanwendungen geeignet. Da Docker den Kernel des Hosts teilt, haben Container einen vernachlässigbaren Einfluss auf die Systemleistung. Die Startzeit des Containers erfolgt fast sofort, da Sie nur Prozesse starten, nicht ein ganzes Betriebssystem.

Erste Schritte

Docker ist verfügbar auf alle gängigen Linux-Distributionen. Es läuft auch unter Windows und macOS. Folgen Sie den Anweisungen zur Einrichtung von Docker für Ihre Plattform, um sie zum Laufen zu bringen.

Werbung

Sie können überprüfen, ob Ihre Installation funktioniert, indem Sie einen einfachen Container starten:

docker run hello-world

Dadurch wird ein neuer Container mit dem grundlegenden hello-world-Image gestartet. Das Image gibt eine Ausgabe aus, die erklärt, wie Docker verwendet wird. Der Container wird dann beendet und bringt Sie zurück zu Ihrem Terminal.

Bilder erstellen

Nachdem Sie hello-world ausgeführt haben, können Sie Ihre eigenen Docker-Images erstellen. Ein Dockerfile beschreibt, wie Sie Ihren Dienst ausführen, indem Sie die erforderliche Software installieren und Dateien hineinkopieren. Hier ein einfaches Beispiel unter Verwendung des Apache-Webservers:

FROM httpd:latest RUN echo “LoadModule headers_module modules/mod_headers.so” >> /usr/local/apache2/conf/httpd.conf COPY .htaccess /var/www/html/.htaccess COPY index.html /var/www/html/index.html COPY css//var/www/html/css < p>Die FROM-Zeile definiert das Basisbild. In diesem Fall gehen wir vom offiziellen Apache-Image aus. Docker wendet die verbleibenden Anweisungen in Ihrem Dockerfile auf das Basis-Image an.

Die Phase RUN führt einen Befehl innerhalb des Containers aus. Dies kann ein beliebiger Befehl sein, der in der Umgebung des Containers verfügbar ist. Wir aktivieren das Apache-Header-Modul, das von der .htaccess-Datei verwendet werden könnte, um Routing-Regeln einzurichten.

Werbung

Die letzten Zeilen kopieren die HTML- und CSS-Dateien in Ihr Arbeitsverzeichnis in das Container-Image. Ihr Image enthält jetzt alles, was Sie zum Betrieb Ihrer Website benötigen.

Jetzt können Sie das Image erstellen:

docker build -t meine-website:v1 .

Docker verwendet Ihr Dockerfile, um das Image zu erstellen. Sie sehen die Ausgabe in Ihrem Terminal, während Docker jede Ihrer Anweisungen ausführt.

Das -t im Befehl markiert Ihr Bild mit einem bestimmten Namen (my-website:v1). Dies erleichtert die zukünftige Bezugnahme. Tags bestehen aus zwei Komponenten, die durch einen Doppelpunkt getrennt sind. Der erste Teil legt den Bildnamen fest, während der zweite normalerweise seine Version bezeichnet. Wenn Sie den Doppelpunkt weglassen, verwendet Docker standardmäßig die neueste Version des Tags.

Die . am Ende des Befehls weist Docker an, das Dockerfile in Ihrem lokalen Arbeitsverzeichnis zu verwenden. Dadurch wird auch der Build-Kontext festgelegt, sodass Sie Dateien und Ordner in Ihrem Arbeitsverzeichnis mit COPY-Anweisungen in Ihrem Dockerfile verwenden können.

Sobald Sie Ihr Image erstellt haben, können Sie einen Container mit Docker Run starten :

docker run -d -p 8080:80 meine-website:v1

Wir verwenden hier ein paar zusätzliche Flags mit Docker Run. Das Flag -d bewirkt, dass sich die Docker-CLI vom Container trennt, sodass sie im Hintergrund ausgeführt werden kann. Eine Portzuordnung wird mit -p definiert, also wird Port 8080 auf Ihrem Host Port 80 im Container zugeordnet. Sie sollten Ihre Webseite sehen, wenn Sie localhost:8080 in Ihrem Browser aufrufen.

Werbung

Docker-Images werden aus Schichten gebildet. Jede Anweisung in Ihrem Dockerfile erstellt eine neue Ebene. Sie können erweiterte Gebäudefunktionen verwenden, um auf mehrere Basisbilder zu verweisen und Zwischenebenen aus früheren Bildern zu verwerfen.

Bildregistrierungen

Sobald Sie ein Bild haben, können Sie schieben Sie es in eine Registrierung. Registrierungen bieten einen zentralen Speicher, sodass Sie Container für andere freigeben können. Die Standardregistrierung ist Docker Hub.

Wenn Sie einen Befehl ausführen, der auf ein Image verweist, überprüft Docker zunächst, ob es lokal verfügbar ist. Wenn dies nicht der Fall ist, wird versucht, es aus Docker Hub zu ziehen. Sie können Bilder manuell mit dem Befehl docker pull ziehen:

docker pull httpd:latest

Wenn Sie ein Image veröffentlichen möchten, erstellen Sie ein Docker Hub-Konto. Führen Sie docker login aus und geben Sie Ihren Benutzernamen und Ihr Passwort ein.

Taggen Sie als Nächstes Ihr Image mit Ihrem Docker Hub-Benutzernamen:

docker tag my-image:latest docker-hub-username/my-image:latest

Jetzt können Sie Ihr Image übertragen:

docker push docker-hub-username/my-image:latest

Andere Benutzer können Ihr Image abrufen und Container damit starten.

Werbung

Sie können Ihre eigene Registrierung ausführen, wenn Sie privaten Imagespeicher benötigen. Mehrere Drittanbieterdienste bieten auch Docker-Registrys als Alternative zu Docker Hub an.

Managing Your Containers

Die Docker-Befehlszeilenschnittstelle bietet mehrere Befehle, mit denen Sie arbeiten können Verwalten Sie Ihre laufenden Container. Hier sind einige der nützlichsten, die Sie kennen sollten:

Auflisten von Containern

docker ps zeigt Ihnen alle Ihre laufenden Container an. Wenn Sie das Flag -a hinzufügen, werden auch gestoppte Container angezeigt.

Stoppen und Starten von Containern

Um einen Container zu stoppen, führen Sie docker stop my-container aus. Ersetzen Sie my-container durch den Namen oder die ID des Containers. Sie können diese Informationen über den Befehl ps abrufen. Ein gestoppter Container wird mit docker start my-container neu gestartet.

Container laufen normalerweise so lange, wie ihr Hauptprozess am Leben bleibt. Neustartrichtlinien steuern, was passiert, wenn ein Container stoppt oder Ihr Host neu gestartet wird. Übergeben Sie –restart immer an docker run, damit der Container sofort nach dem Stoppen neu gestartet wird.

Eine Shell abrufen

Sie können einen Befehl in run ausführen ein Container, der docker exec my-container my-command verwendet. Dies ist nützlich, wenn Sie manuell eine ausführbare Datei aufrufen möchten, die vom Hauptprozess des Containers getrennt ist.

Werbung

Fügen Sie das Flag -it hinzu, wenn Sie interaktiven Zugriff benötigen. Auf diese Weise können Sie in eine Shell fallen, indem Sie docker exec -it my-container sh ausführen.

Überwachungsprotokolle

Docker erfasst automatisch die Ausgabe, die an die standardmäßigen Eingabe- und Ausgabestreams eines Containers ausgegeben wird. Der Befehl docker logs my-container zeigt die Protokolle eines Containers in Ihrem Terminal an. Das Flag –follow richtet einen kontinuierlichen Stream ein, damit Sie Protokolle in Echtzeit anzeigen können.

Ressourcen bereinigen

Alte Container und Images können sich schnell auf Ihrem System anhäufen. Verwenden Sie docker rm my-container, um einen Container anhand seiner ID oder seines Namens zu löschen.

Der Befehl für Bilder ist docker rmi my-image:latest. Übergeben Sie die ID des Bilds oder den vollständigen Tag-Namen. Wenn Sie ein Tag angeben, wird das Bild erst gelöscht, wenn ihm keine weiteren Tags zugewiesen sind. Andernfalls wird das angegebene Tag entfernt, die anderen Tags des Bildes bleiben jedoch verwendbar.

Massenbereinigungen sind mit dem Befehl docker prune möglich. Auf diese Weise können Sie ganz einfach alle angehaltenen Container und redundanten Bilder entfernen.

Grafische Verwaltung

Wenn das Terminal nicht Ihr Ding ist, dann können Tools von Drittanbietern verwenden, um eine grafische Benutzeroberfläche für Docker einzurichten. Mit Web-Dashboards können Sie Ihre Installation schnell überwachen und verwalten. Sie helfen Ihnen auch dabei, die Fernsteuerung Ihrer Container zu übernehmen.

Persistente Datenspeicherung

Docker-Container sind standardmäßig kurzlebig. Am Dateisystem eines Containers vorgenommene Änderungen bleiben nach dem Stoppen des Containers nicht erhalten. Es ist nicht sicher, irgendeine Form von Dateispeichersystem in einem Container auszuführen, der mit einem einfachen Docker-Ausführungsbefehl gestartet wird.

Werbung

Es gibt verschiedene Ansätze, um persistente Daten zu verwalten. Am häufigsten wird ein Docker-Volume verwendet. Volumes sind Speichereinheiten, die in Container-Dateisysteme eingehängt werden. Alle Daten in einem Volume bleiben intakt, nachdem der verknüpfte Container gestoppt wurde, sodass Sie in Zukunft einen anderen Container verbinden können.

Sicherheit beibehalten

Dockerisierte Workloads können sicherer sein als ihre Bare-Metal-Pendants, da Docker eine gewisse Trennung zwischen dem Betriebssystem und Ihren Diensten bietet. Nichtsdestotrotz stellt Docker ein potenzielles Sicherheitsproblem dar, da es normalerweise als Root ausgeführt wird und zum Ausführen von Schadsoftware ausgenutzt werden könnte.

Wenn Sie Docker nur als Entwicklungstool ausführen, ist die Standardinstallation im Allgemeinen sicher zu benutzen. Produktionsserver und Maschinen mit einem netzwerkexponierten Daemon-Socket sollten gehärtet werden, bevor Sie live gehen.

Überwachen Sie Ihre Docker-Installation, um potenzielle Sicherheitsprobleme zu identifizieren. Es stehen automatisierte Tools zur Verfügung, die Ihnen helfen können, Schwachstellen zu finden und Lösungen vorzuschlagen. Sie können auch einzelne Container-Images nach Problemen durchsuchen, die von innen ausgenutzt werden könnten.

Arbeiten mit mehreren Containern

Der Docker-Befehl funktioniert nur mit jeweils einem Behälter. Sie werden Container häufig zusammenfassend verwenden wollen. Docker Compose ist ein Tool, mit dem Sie Ihre Container deklarativ in einer YAML-Datei definieren können. Sie können sie alle mit einem einzigen Befehl starten.

Dies ist hilfreich, wenn Ihr Projekt von anderen Diensten abhängt, z. B. einem Web-Back-End, das auf einem Datenbankserver basiert. Sie können beide Container in Ihrer docker-compose.yml definieren und von einer optimierten Verwaltung mit automatischer Vernetzung profitieren.

Hier eine einfache docker-compose.yml-Datei:

Version: “3” Dienste: App: Image: App-Server:neueste Ports: – 8000:80 Datenbank: Image: Datenbank-Server:neueste Volumes: – Datenbank-Daten:/Daten-Volumes: Datenbank-Daten: Werbung

Dies definiert zwei Container (App und Datenbank). Für die Datenbank wird ein Volume erstellt. Dies wird an /data im Container gemountet. Der Port 80 des App-Servers wird als 8000 auf dem Host bereitgestellt. Führen Sie docker-compose up -d aus, um beide Dienste zu starten, einschließlich des Netzwerks und des Volumes.

Mit Docker Compose können Sie wiederverwendbare Containerdefinitionen schreiben, die Sie mit anderen teilen können. Sie könnten eine docker-compose.yml in Ihre Versionskontrolle übernehmen, anstatt dass sich Entwickler Docker-Ausführungsbefehle merken müssen.

Es gibt auch andere Ansätze zum Ausführen mehrerer Container. Docker App ist eine neue Lösung, die eine weitere Abstraktionsebene bietet. An anderen Stellen im Ökosystem ist Podman eine Docker-Alternative, mit der Sie “Pods” von Containern in Ihrem Terminal.

Container-Orchestrierung

Docker wird normalerweise in der Produktion nicht so ausgeführt, wie es ist. Es ist jetzt üblicher, eine Orchestrierungsplattform wie Kubernetes oder den Docker Swarm-Modus zu verwenden. Diese Tools wurden entwickelt, um mehrere Containerreplikate zu verarbeiten, was die Skalierbarkeit und Zuverlässigkeit verbessert.

Docker ist nur eine Komponente in der breiteren Containerisierungsbewegung. Orchestratoren verwenden dieselben Container-Laufzeittechnologien, um eine Umgebung bereitzustellen, die besser für die Produktion geeignet ist. Die Verwendung mehrerer Containerinstanzen ermöglicht fortlaufende Updates sowie die Verteilung auf Computer, wodurch Ihre Bereitstellung widerstandsfähiger gegenüber Änderungen und Ausfällen wird. Die normale Docker-CLI zielt auf einen Host ab und arbeitet mit einzelnen Containern.

Eine leistungsstarke Plattform für Container

Docker bietet Ihnen alles, was Sie zum Arbeiten mit Containern benötigen. Es hat sich zu einem wichtigen Werkzeug für die Softwareentwicklung und Systemadministration entwickelt. Die Hauptvorteile sind eine erhöhte Isolation und Portabilität für einzelne Dienste.

Werbung

Um sich mit Docker vertraut zu machen, müssen Sie die grundlegenden Container- und Image-Konzepte kennen. Sie können diese anwenden, um Ihre speziellen Images und Umgebungen zu erstellen, die Ihre Workloads containerisieren.

WEITER LESEN

  • › So steuern Sie Ihr Smart Home über die Android-Schnelleinstellungen
  • › So konvertieren Sie ein Word-Dokument in eine PowerPoint-Präsentation
  • › Was ist Amazon Echo Auto und wie funktioniert es?
  • › So überprüfen Sie Ihre Bildschirmauflösung in Windows 10
  • › So erhalten Sie das Wetter-Widget der Taskleiste von Windows 10 zurück