it-swarm.com.de

Wie kann ich eine lokale Datei für einen Container verwenden?

Ich versuche, einen Container zum Ausführen eines Programms zu erstellen. Ich verwende ein vorkonfiguriertes Image und muss jetzt das Programm ausführen. Es ist jedoch ein maschinelles Lernprogramm und ich benötige einen Datensatz von meinem Computer, um es auszuführen.

Die Datei ist zu groß, um in den Container kopiert zu werden. Es ist am besten, wenn das im Container ausgeführte Programm den Datensatz in einem lokalen Verzeichnis meines Computers durchsucht, aber ich weiß nicht, wie ich das tun kann.

Gibt es eine Möglichkeit, diese Referenz mit einem Docker-Befehl auszuführen? Oder mit Dockerfile?

27
gomesh

Ja, das kannst du. Was Sie beschreiben, ist ein Bind Mount. Weitere Informationen zu diesem Thema finden Sie unter https://docs.docker.com/storage/bind-mounts/ .

Wenn ich beispielsweise einen Ordner aus meinem Ausgangsverzeichnis in /mnt/mydata In einem Container mounten möchte, kann ich Folgendes tun:

docker run -v /Users/andy/mydata:/mnt/mydata myimage

Jetzt hat /mnt/mydata Im Container Zugriff auf /Users/andy/mydata Auf meinem Host.

Beachten Sie, dass bei Verwendung von Docker für Mac oder Docker für Windows bestimmte Verzeichnisse auf dem Host standardmäßig zulässig sind:

Wenn Sie Docker Machine unter Mac oder Windows verwenden, hat Ihr Docker Engine-Daemon nur eingeschränkten Zugriff auf Ihr macOS- oder Windows-Dateisystem. Docker Machine versucht, das Verzeichnis/Users (macOS) oder C:\Users (Windows) automatisch freizugeben. So können Sie Dateien oder Verzeichnisse unter macOS mit mounten.

Update Juli 2019:

Ich habe den Dokumentationslink und die Benennung so aktualisiert, dass sie korrekt sind. Diese Art von Halterungen werden als "Bindungshalterungen" bezeichnet. Das Snippet zu Docker für Mac oder Windows wird nicht mehr in der Dokumentation angezeigt, sollte jedoch weiterhin zutreffen. Ich bin nicht sicher, warum sie es entfernt haben (auf meinem Docker für Mac gibt es immer noch eine explizite Liste der zulässigen Bereitstellungspfade auf dem Host).

41
Andy Shinn