Permanenten Speicher an einen Container anbinden

Red Hat Enterprise LinuxBeginner
Jetzt üben

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 /data auf dem Host-System. Dieses Verzeichnis dient als Host-Pfad für den Volume-Mount.
  • Starten Sie einen Container basierend auf dem nginx Image. Der Container muss den Namen my-nginx-container tragen.
  • Mounten Sie das Host-Verzeichnis /data in das Verzeichnis /usr/share/nginx/html innerhalb des Containers.
  • Erstellen Sie innerhalb des laufenden Containers eine Datei unter /usr/share/nginx/html/my-file.txt mit dem exakten Inhalt This 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 /data zu erstellen.
  • Möglicherweise müssen Sie die Besitzrechte mit sudo chown und die Berechtigungen mit sudo chmod anpassen, damit der Container-Prozess Schreibzugriff erhält.
  • Das Flag -v oder --volume beim Befehl podman run wird 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(/.*)?" und sudo 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).
✨ Lösung prüfen und üben

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.