Einführung
Docker-Datenvolumes ist ein wichtiges Konzept bei der Containerisierung Ihrer Anwendungen. Dieses Konzept zu kennen ist entscheidend, um die beste Erfahrung mit Ihrer containerisierten Anwendung sowie eine zuverlässige Persistenz und Datenverwaltung zu gewährleisten. Obwohl dieses Konzept wichtig ist, ist es für viele Entwickler auch verwirrend und komplex. Für Entwickler und DevOps-Spezialisten ist es wichtig zu verstehen, wie man Docker-Datenvolumes einrichtet, deren korrekte Verwendung versteht, die verschiedenen Typen von Volumes kennt und weiß, welchen Typ sie für ihre Anwendung auswählen sollten.
Dieses Tutorial konzentriert sich auf die Erklärung des Konzepts und der Nutzung von Docker-Datenvolumes. Nach Abschluss dieses Tutorials werden Sie die Einrichtung und den Umgang mit jeder Art von Docker-Datenvolume beherrschen.
Voraussetzungen
Um diesem Tutorial folgen zu können, benötigen Sie die folgenden Elemente:
- Ubuntu installiert. Sehen Sie sich unser So richten Sie Ihren Ubuntu 18.04-Server ein-Tutorial als schnelle Referenz an.
- Ubuntu-Benutzer mit sudo-Rechten. Dieser Schritt kann kompliziert sein, insbesondere wenn Sie mit Linux nicht vertraut sind. Lesen Sie Konfigurieren der Linux-Sudoers-Datei für eine detaillierte Anleitung.
- Docker auf Ubuntu installiert. Um Docker auf Ihrem Ubuntu zu installieren, können Sie unserem Wie man Docker auf Ubuntu in der Public Cloud installiert & betreibt-Blog folgen.
Obwohl sich dieses Tutorial auf die Verwaltung von Docker auf Ubuntu konzentriert, sind docker -Befehle auf allen Betriebssystemen anwendbar, auf denen Docker installiert ist.
Verstehen, wie Docker-Container funktionieren
Um Docker-Datenvolumes vollständig zu verstehen, müssen Sie wissen, wie Docker-Container funktionieren. In diesem Abschnitt bieten wir neuen Docker-Benutzern einen Überblick über die Grundlagen. Wenn Sie bereits wissen, wie Docker funktioniert, oder ein erfahrener Docker-Benutzer sind, können Sie diesen Abschnitt überspringen und direkt mit den Datenvolumes beginnen.
Docker-Container ermöglichen die Ausführung einer Anwendung auf dem Host-Betriebssystem durch die Installation der Docker-Plattform. Da die Docker-Plattform auf dem Host-Betriebssystem installiert ist, entsteht eine Abstraktion zwischen dem Host-Rechner und der Gast-Anwendung. Im Gegensatz zu einer virtuellen Maschine teilt sich ein Docker-Container seinen Linux-Kernel mit dem Host-Betriebssystem. Da Docker kein zusätzliches Betriebssystem auf dem Host-Rechner installieren muss, sind Docker-Anwendungen leichtgewichtig und auf allen Host-Rechnern zugänglich, solange Docker auf diesem Host-Rechner installiert ist.
Da kein zusätzliches Gast-Betriebssystem vorhanden ist, teilt sich die Docker-Plattform die Ressourcen mit dem Host-Rechner. Das Starten der Docker-Anwendung geht schnell, aber die Komplexität entsteht, wenn Sie die Ressourcen teilen müssen. Docker verfügt nicht über eigenen Arbeitsspeicher oder Speicher für die Datenpersistenz. Diese Ressourcen müssen vom Host-Rechner kommen. Personen, die an die Verwendung virtueller Maschinen gewöhnt sind, finden diesen Prozess der Freigabe und Verwaltung von Ressourcen oft schwierig. Fehlendes Fachwissen kann zu unerwarteten und unerwünschten Ergebnissen führen. Obwohl dieses Tutorial davon ausgeht, dass Sie mit dem Docker-Ökosystem vertraut sind, können Sie gerne unser detailliertes Tutorial Was ist Docker? Ein Überblick über das Docker-Ökosystem für eine kurze Auffrischung durchgehen.
Datenpersistenz mit Docker-Datenvolumes
Wenn Sie mit Docker arbeiten, können Sie ein Volume nicht direkt darin erstellen. Daher müssen wir zur Datenspeicherung einen Docker-Volume-Container erstellen, an den ein Volume angehängt ist. Um unsere Docker-Anwendung mit diesem Datenvolume-Container zu verbinden, verwenden wir den --volume-from -Befehl von Docker, um den Container abzurufen und an unsere Anwendung anzuhängen.
Wir werden den Prozess Schritt für Schritt durchgehen:
- Erstellen Sie zuerst einen neuen Container namens
my-container indem Sie den folgenden Befehl ausführen:
1docker create -v /tmp --name my-container ubuntu
Dies erstellt einen neuen Container im Ordner /tmp . Sie können das Ordnerverzeichnis nach Bedarf ändern. - Da Ihr Datencontainer nun bereit ist, können Sie in ihn schreiben, indem Sie einen neuen Ubuntu-Container mit dem Flag
--volume-from ausführen und dann die
bash ausführen. Alles, was wir in das Verzeichnis
tmp-Verzeichnis wird auf dem Host-Rechner in unserem
/tmp Ordner gespeichert:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Die Befehlszeilenoption -t ruft ein Terminal aus dem Inneren des Containers auf. Das Flag -i macht die Verbindung interaktiv. Erstellen Sie an der Bash-Eingabeaufforderung für den Ubuntu-Container eine Datei in /tmp:
1echo "Some sample data" > /tmp/sample_file - Beenden Sie diese Bash schließlich, indem Sie den Befehl
exit ausführen. Führen Sie als Nächstes den folgenden Befehl aus:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Sie finden Ihre sample_file in diesem Verzeichnis. Es gibt keine Einschränkung für die Anzahl der anzugebenden Volumes. Sie können so viele Volumes hinzufügen, wie Sie möchten, indem Sie das --volumes-from-Flag verwenden. Sie können auch so viele Daten-Volume-Container erstellen, wie Sie möchten.
Zugriff auf Daten zwischen dem Host und dem Docker-Container
Für Leser mit Erfahrung in der Virtualisierung ähnelt diese Option der Option für freigegebene Ordner in virtuellen Maschinen. Anstatt hier einen data-only Container zu erstellen, führen wir unsere Docker-Anwendung mit einem Docker-Image aus und überschreiben eines seiner Verzeichnisse mit dem Inhalt eines Verzeichnisses auf dem Host-System.
Ein häufiges Szenario wäre das Speichern der Protokolldateien auf dem Host-Rechner. Dies kann erforderlich sein, damit wir diese Dateien bei Bedarf analysieren können, ohne in die Maschine gehen zu müssen. Nehmen wir für dieses Szenario an, Sie verwenden das Docker-Nginx-Image und möchten dessen Protokolldateien auf dem Host-Rechner speichern. Das Nginx-Docker-Image schreibt die Protokolle in das Verzeichnis /var/log/nginx, aber dies ist /var/log/nginx innerhalb des Docker-Nginx-Containers. Daher ist dieser Speicherort für den Host-Rechner nicht zugänglich.
Um unser Ziel zu erreichen, müssen wir einen freigegebenen Ordner erstellen, um die Protokolle zwischen dem Host-Rechner und dem Docker-Nginx-Image zu speichern. Im Folgenden veranschaulichen wir diesen Prozess in einer einfachen Schritt-für-Schritt-Anleitung:
- Erstellen Sie zuerst ein Verzeichnis auf Ihrem Host-Rechner, in dem Sie die Protokolle speichern möchten:
Starten Sie dann Ihren Container, indem Sie den folgenden Befehl ausführen:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Dieser
run-Befehl akzeptiert einige Argumente, also lassen Sie uns ihn aufschlüsseln, um ihn besser zu verstehen:
- -p 5000:80: Richten Sie eine Portweiterleitung ein. Der Nginx-Container lauscht standardmäßig auf Port 80 und dies ordnet den Port des Nginx-Containers 80 dem Port 5000 auf dem Host-System zu.
- -d: Trennen Sie den Prozess und führen Sie ihn im Hintergrund aus.
- -v ~/my-nginxlogs:/var/log/nginx: Wir verknüpfen das Verzeichnis /var/log/nginx aus dem Inneren des Nginx-Containers mit dem Verzeichnis /my-nginxlogs auf dem Host-Rechner. Dieses : trennt den Pfad des Hosts vom Pfad des Containers. Der Host-Pfad steht immer an erster Stelle.
Da unser Nginx-Container nun läuft, überprüfen Sie zuerst, ob der Nginx-Server auf dem Port unseres Host-Rechners 5000 läuft, indem Sie Ihren Webbrowser öffnen und die URL aufrufen: http://localhost:5000. Sobald die Willkommensseite angezeigt wird, ist Ihr Nginx-Server bereit und erstellt Protokolle in seinem Ordner /var/log/nginx .
Wenn Sie den Ordner /my-nginxlogs Ihres Host-Rechners öffnen, sehen Sie hier die Protokolldateien aus dem Docker-Nginx-Container. Wenn Sie Änderungen am Ordner /my-nginxlogs auf dem Host-Rechner vornehmen, während der Nginx-Container läuft, werden die Änderungen auch im Ordner /var/log/nginx des Containers widergespiegelt.
Fazit
In diesem Tutorial haben wir einen umfassenden Ansatz zum Verständnis von Docker Data Volumes gewählt. Wir haben uns mit dem Erstellen von Volumes für Ihre Anwendung, dem Teilen von Daten zwischen Host und Docker-Container, den Datentypen und der Persistierung von Daten befasst. Dies wird Ihnen helfen, Daten in Ihren containerisierten Anwendungen zu persistieren sowie den Zustand und die Konfiguration der Anwendung zu verwalten.
Weitere Informationen zu Docker finden Sie in den folgenden Tutorials in unserem Blog:
- So hosten Sie ein Docker-Image-Repository und erstellen Docker-Images mit einer selbstverwalteten GitLab-Instanz auf Ubuntu 20.04
- Erstellen und Bereitstellen einer Flask-Anwendung mit Docker auf Ubuntu 20.04
- Einrichten einer privaten Docker-Registry auf Ubuntu 18.04
- Wie man Daten zwischen einem Docker-Container und einem Host teilt
- Docker-Ressourcen bereinigen – Images, Container und Volumes
Frohes Schaffen!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.