Einführung
In dieser Herausforderung werden Sie mithilfe von podman permanenten Speicher an einen Container anbinden. Container sind von Natur aus flüchtig, was bedeutet, dass alle innerhalb eines Containers erstellten Daten verloren gehen, sobald dieser entfernt wird. Um Daten dauerhaft zu speichern, können Sie ein Verzeichnis vom Host-System in den Container einbinden (mounten). Dieses eingebundene Verzeichnis wird als persistentes Volume bezeichnet und stellt sicher, dass Ihre Daten erhalten bleiben, selbst wenn der Container gestoppt, gelöscht oder neu erstellt wird.
Permanenten Speicher an einen Container anbinden
In dieser Aufgabe erstellen Sie zunächst ein Verzeichnis auf dem Host-System, das als persistentes Volume fungieren soll. Anschließend starten Sie einen neuen Container und binden dieses Volume an. Zum Abschluss überprüfen Sie, ob die vom Container aus geschriebenen Daten auch nach einem Neustart des Containers noch vorhanden sind.
Aufgaben
- Erstellen Sie ein Verzeichnis auf dem Host-System, das als persistentes Volume dient.
- Starten Sie einen neuen Container und binden Sie das persistente Volume daran an.
- Verifizieren Sie, dass die im Container geschriebenen Daten nach einem Neustart des Containers erhalten bleiben.
Anforderungen
- Erstellen Sie ein Verzeichnis namens
/dataauf dem Host-System. Dieses Verzeichnis dient als Host-Pfad für den Volume-Mount. - Starten Sie einen Container basierend auf dem
nginxImage. Der Container muss den Namenmy-nginx-containertragen. - Mounten Sie das Host-Verzeichnis
/datain das Verzeichnis/usr/share/nginx/htmlinnerhalb des Containers. - Erstellen Sie innerhalb des laufenden Containers eine Datei unter
/usr/share/nginx/html/my-file.txtmit dem exakten InhaltThis is a persistent file.
Beispiel
Nach Abschluss der Aufgaben sollten Sie Ihre benutzerdefinierte Datei zusammen mit den Standard-Nginx-Dateien im eingebundenen Verzeichnis des Containers sehen können. Sie können auch das Host-Verzeichnis /data prüfen, um dieselben Dateien dort zu finden.
[labex@host ~]$ podman exec my-nginx-container cat /usr/share/nginx/html/my-file.txt
This is a persistent file
[labex@host ~]$ podman exec my-nginx-container ls /usr/share/nginx/html
my-file.txt
Hinweise
- Verwenden Sie den Befehl
sudo mkdir, um das Verzeichnis/datazu erstellen. - Möglicherweise müssen Sie die Besitzrechte mit
sudo chownund die Berechtigungen mitsudo chmodanpassen, damit der Container-Prozess Schreibzugriff erhält. - Das Flag
-voder--volumebeim Befehlpodman runwird verwendet, um ein Host-Verzeichnis in einen Container einzubinden. Das Format lautet-v /host/path:/container/path. - Auf Systemen mit aktiviertem SELinux (wie RHEL) müssen Sie den korrekten SELinux-Kontext für das Host-Verzeichnis setzen. Verwenden Sie
sudo semanage fcontext -a -t container_file_t "/data(/.*)?"undsudo restorecon -R /data, um die SELinux-Labels zu konfigurieren. - Falls Berechtigungsfehler auftreten, versuchen Sie, die Besitzrechte des Verzeichnisses so zu setzen, dass sie der Benutzer-ID des Containers entsprechen (bei Nginx typischerweise 1000:1000).
Zusammenfassung
In dieser Herausforderung haben Sie gelernt, wie Sie einem Container über einen Bind-Mount permanenten Speicher zur Verfügung stellen. Durch das Einbinden eines Host-Verzeichnisses in einen Container stellen Sie sicher, dass die von Ihrer Anwendung erzeugten Daten auch dann erhalten bleiben, wenn der Container gestoppt, gelöscht oder neu gestartet wird. Diese Technik ist eine grundlegende Voraussetzung für den Betrieb zustandsbehafteter (stateful) Anwendungen in Containern.



