Datei-Berechtigungen bei der Übertragung von Dateien zwischen Host und Container verwalten

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker ist ein leistungsstarkes Werkzeug zur Containerisierung von Anwendungen, aber die Verwaltung von Datei-Berechtigungen kann eine Herausforderung darstellen, wenn Dateien zwischen dem Host und dem Container übertragen werden. Dieses Tutorial führt Sie durch das Verständnis von Datei-Berechtigungen, die Übertragung von Dateien in Docker und die effektive Verwaltung von Datei-Berechtigungen, um einen reibungslosen Arbeitsablauf zu gewährleisten.

Datei-Berechtigungen verstehen

Datei-Berechtigungen in Linux

In Linux hat jede Datei und jedes Verzeichnis eine Reihe von Berechtigungen, die festlegen, wer auf die Datei zugreifen, sie ändern oder ausführen kann. Diese Berechtigungen werden in drei Hauptkategorien definiert: Besitzer, Gruppe und Andere.

Die Berechtigungen für eine Datei oder ein Verzeichnis werden durch eine Folge von 10 Zeichen dargestellt, z. B. -rw-r--r--. Das erste Zeichen gibt den Dateityp an (- für reguläre Datei, d für Verzeichnis, l für symbolischen Link usw.). Die restlichen 9 Zeichen stellen die Lese (r), Schreib (w) und Ausführungs (x) Berechtigungen für Besitzer, Gruppe und Andere dar.

graph TD A[Datei-Berechtigungen] --> B(Besitzer) A --> C(Gruppe) A --> D(Andere) B --> B1[Lesen] B --> B2[Schreiben] B --> B3[Ausführen] C --> C1[Lesen] C --> C2[Schreiben] C --> C3[Ausführen] D --> D1[Lesen] D --> D2[Schreiben] D --> D3[Ausführen]

Datei-Berechtigungen ändern

Sie können den Befehl chmod verwenden, um die Berechtigungen einer Datei oder eines Verzeichnisses zu ändern. Der Befehl akzeptiert eine oktale oder symbolische Darstellung der Berechtigungen, die Sie festlegen möchten.

Oktale Darstellung:

  • chmod 755 datei.txt setzt die Berechtigungen auf rwxr-xr-x.
  • chmod 644 datei.txt setzt die Berechtigungen auf rw-r--r--.

Symbolische Darstellung:

  • chmod u+x datei.txt fügt dem Besitzer die Ausführungsberechtigung hinzu.
  • chmod g-w datei.txt entfernt die Schreibberechtigung für die Gruppe.
  • chmod o=r datei.txt setzt die Berechtigung für Andere auf nur Lesen.

Berechtigungsübertragung

Wenn Sie eine neue Datei oder ein neues Verzeichnis erstellen, werden die Berechtigungen durch die Berechtigungen des übergeordneten Verzeichnisses und den Standard-umask-Wert des Benutzers bestimmt. Der umask ist eine vierstellige oktale Zahl, die die Berechtigungen darstellt, die von den Standardberechtigungen entfernt werden sollen.

Beispielsweise, wenn die Standardberechtigungen für eine neue Datei 0666 (Lesen und Schreiben für Besitzer, Gruppe und Andere) sind und der umask 0022 ist, werden die resultierenden Berechtigungen für die neue Datei 0644 sein (Lesen und Schreiben für Besitzer, nur Lesen für Gruppe und Andere).

Dateien in Docker übertragen

Volumes und bind Mounts

In Docker gibt es zwei Hauptmethoden, um Dateien zwischen dem Host und dem Container zu übertragen:

  1. Volumes: Docker Volumes sind verwaltete Speicherorte, die unabhängig vom Lebenszyklus des Containers sind. Sie können verwendet werden, um Daten zu speichern oder zwischen Containern zu teilen.

  2. Bind Mounts: Bind Mounts ermöglichen es Ihnen, ein Verzeichnis auf dem Host-Computer einem Verzeichnis innerhalb des Containers zuzuordnen. Dies bietet eine Möglichkeit, Dateien und Verzeichnisse zwischen Host und Container freizugeben.

graph TD A[Dateien übertragen in Docker] --> B(Volumes) A --> C(Bind Mounts)

Volumes verwenden

Um ein Volume zu erstellen und an einen Container zu mounten, können Sie den Flag -v oder --mount beim Ausführen des Befehls docker run verwenden:

docker run -v /host/path:/container/path image

oder

docker run --mount type=volume,source=my-volume,target=/container/path image

Bind Mounts verwenden

Um ein Bind Mount zu verwenden, können Sie das Host-Verzeichnis und das Container-Verzeichnis beim Ausführen des Befehls docker run angeben:

docker run -v /host/path:/container/path image

oder

docker run --mount type=bind,source=/host/path,target=/container/path image

Sowohl Volumes als auch Bind Mounts können verwendet werden, um Dateien zwischen Host und Container zu übertragen, aber sie haben unterschiedliche Eigenschaften und Anwendungsfälle.

Verwaltung von Datei-Berechtigungen

Beibehaltung von Datei-Berechtigungen

Beim Übertragen von Dateien zwischen dem Host und dem Container ist es wichtig, die Datei-Berechtigungen zu erhalten. Dies ist besonders wichtig, wenn der Container als Nicht-Root-Benutzer ausgeführt wird, da der Container-Benutzer möglicherweise nicht über die erforderlichen Berechtigungen verfügt, um auf die Dateien zuzugreifen.

Um Datei-Berechtigungen bei Verwendung von Volumes oder bind Mounts zu erhalten, können Sie das Flag --chmod beim Mounten des Volumes oder Bind Mounts verwenden. Dadurch können Sie die gewünschten Berechtigungen für das gemountete Verzeichnis festlegen.

docker run -v /host/path:/container/path:rw,chmod=755 image

oder

docker run --mount type=bind,source=/host/path,target=/container/path,readonly,chmod=644 image

Chown im Container

Eine weitere Möglichkeit, Datei-Berechtigungen im Container zu verwalten, ist die Verwendung des Befehls chown innerhalb des Containers, um Besitzer und Gruppe der Dateien zu ändern. Dies ist nützlich, wenn der Container als Nicht-Root-Benutzer ausgeführt wird und die Dateien einem anderen Benutzer oder einer anderen Gruppe gehören.

## Besitzer und Gruppe einer Datei ändern
docker exec my-container chown user:group /container/path/file.txt

## Besitzer und Gruppe eines Verzeichnisses rekursiv ändern
docker exec my-container chown -R user:group /container/path

Umgang mit Berechtigungen in Dockerfiles

Beim Erstellen eines Docker-Images können Sie die Datei-Berechtigungen auch im Dockerfile mithilfe des Befehls RUN und der Befehle chmod oder chown festlegen.

## Berechtigungen für eine Datei festlegen
RUN chmod 644 /container/path/file.txt

## Besitzer und Gruppe einer Datei ändern
RUN chown user:group /container/path/file.txt

Durch die Verwaltung von Datei-Berechtigungen im Dockerfile stellen Sie sicher, dass die Dateien beim Starten des Containers die korrekten Berechtigungen haben.

Zusammenfassung

In diesem Docker-Tutorial haben Sie gelernt, wie Sie Datei-Berechtigungen beim Übertragen von Dateien zwischen dem Host und dem Container handhaben. Durch das Verständnis von Datei-Berechtigungen, die korrekte Übertragung von Dateien und die Verwaltung der Berechtigungen können Sie sicherstellen, dass Ihr Docker-Workflow sicher und effizient ist. Die Anwendung dieser Techniken hilft Ihnen, häufige Probleme zu vermeiden und die Kontrolle über Ihren Dateizugriff und die Dateibesitzverhältnisse zu behalten.