Docker einfacher Dateifreigabe-Host <> Docker

Oct 25 2020

Ich bin neu bei Docker. Ich versuche zu erreichen, einen Docker auszuführen und einige Dateien hinzuzufügen. Der Benutzer sollte in der Lage sein, diese Dateien zu ändern und den Docker seine Magie wirken zu lassen. Leistung ist nicht wichtig, aber Einfachheit. Es sollte möglich sein, den Docker ohne weitere Argumente auszuführen, nur "-it". Ich habe versucht, Volumes zu verwenden, aber ...

docker-compose.yml:

version: '3.4'

volumes:
  data:
    name: templatevolume

services:
  template:
    image: template
    volumes:
        - data:/usr/template/:rw
    build:
        context: .
        dockerfile: ./Dockerfile

... das Volume wird erstellt, aber nicht dem Docker zugewiesen. Gibt es einen besseren Weg? Muss ich dem Docker das Volume im Befehl run zuweisen? Bitte beraten.

Dockerfile:

FROM fedora:latest

LABEL Name=template Version=0.0.1

...

Es ist eine lange Docker-Datei, aber ich mache hier nichts mit Volumes und nichts Besonderes, sondern installiere nur Pakete.

Antworten

IvanAvdonin Oct 26 2020 at 00:40

Sie können Bindungs-Mounts verwenden. Sie werden ein Verzeichnis Ihrer physischen Maschine in Ihren Docker-Container einbinden.

Für ein solches Volume müssen Sie die Quelle des Mount angeben. Dies ist der Pfad zu der Datei oder dem Verzeichnis auf dem Docker-Daemon-Host (Ihrem Computer) und das Ziel . Dies ist der Pfad, unter dem die Datei oder das Verzeichnis im Container (innerhalb des Mount) bereitgestellt wird Container).

- "source:target"

Sie müssen überhaupt keine Docker-Volumes erstellen.

Erstellen wir ein verstecktes Verzeichnis .data im Verzeichnis Ihrer Docker-Compose-XML-Datei

$ mkdir .data

Sie docker-compose Datei jetzt:

version: '3.4'

services:
  template:
    image: template
    volumes:
        - data:/usr/template/:rw
        - "./.data:/usr/template/"
    build:
        context: .
        dockerfile: ./Dockerfile

Das ist es. Ein Benutzer kann auf die Dateien in .data zugreifen, und Docker kann dort auch mit allen Inhalten arbeiten.