Ja, das kannst du machen. Was Sie beschreiben, ist ein Bind-Mount. Dokumentation zu diesem Thema finden Sie unter https://docs.docker.com/storage/bind-mounts/ .
Wenn ich beispielsweise einen Ordner aus meinem Ausgangsverzeichnis /mnt/mydata
in einen Container einbinden möchte, kann ich Folgendes tun:
docker run -v /Users/andy/mydata:/mnt/mydata myimage
Jetzt hat /mnt/mydata
der Container Zugriff /Users/andy/mydata
auf meinen 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, Ihr 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 aktualisiert, um korrekt zu sein. Diese Art von Halterungen wird als "Bindungshalterungen" bezeichnet. Das Snippet zu Docker für Mac oder Windows wird nicht mehr in der Dokumentation angezeigt, sollte aber weiterhin gelten. Ich bin nicht sicher, warum sie es entfernt haben (mein Docker für Mac enthält immer noch eine explizite Liste der zulässigen Bereitstellungspfade auf dem Host).
docker run
Befehl und den erwarteten Ergebnissen eine neue Frage stellen, da diese jetzt nicht mehr in den Geltungsbereich dieser Frage fällt. So sollte es tatsächlich funktionieren. Es hört sich so an, als ob der Host-Ordner falsch ist oder Sie etwas von außerhalb von mounten/Users
. Stellen Sie sicher, dass Sie Docker-Versionen und den von Ihnen verwendeten Docker (Docker für Windows usw.) angeben.docker myimage run -v /Users/andy/mydata:/mnt/mydata
docker run --help
:Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]