Docker / Windows Container: jak zamontować folder hosta jako wolumin danych w systemie Windows 2016

17

Jak zamontować wolumin z hosta Windows do systemu-gościa Windows?

Korzystam z systemu Windows Server 2016 TP4 przy użyciu Dockera.

Zgodnie z dokumentacją na https://docs.docker.com/engine/userguide/containers/dockervolumes/

Jeśli używasz Docker Machine na komputerze Mac lub Windows, demon Docker ma ograniczony dostęp do systemu plików OS X lub Windows. Docker Machine próbuje automatycznie udostępnić katalog / Users (OS X) lub C: \ Users (Windows). Możesz więc montować pliki lub katalogi w systemie OS X za pomocą.

W systemie Windows montuj katalogi, używając:

docker run -v / c / Users / [ścieżka]: / [ścieżka kontenera] ... `

Próbowałem:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/meinedaten iis cmd

co daje mi błąd:

docker : docker: Error response from daemon: Invalid bind mount spec "/c/Users/mlin/meinedaten:/meinedaten": volumeinvalid: Invalid volume specification: 
'/c/Users/mlin/meinedaten:/meinedaten'.

Próbowałem także:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/c/meinedaten iis cmd

Zauważ, że ścieżka C: \ meinedaten na gościu / kontenerze już istnieje, co jest wymagane zgodnie z dokumentacją dokera.

Polecenie wygląda dla mnie poprawnie zgodnie z dokumentacją.

wprowadź opis zdjęcia tutaj

(Montowanie woluminów z hosta Mac OS X do kontenera dokującego Ubuntu działa dobrze, mam tylko problemy z Windows.)

Aktualizacja

Próbowałem też używać Windows Containers natywnie (przez Powershell), nie używając Dockera. Postępuję zgodnie z dokumentacją na https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_powershell#create-a-shared-folder .

Add-ContainerSharedFolder -ContainerName mysql2 -SourcePath C:\Users\mlin\meinedaten -DestinationPath C:\meinedaten

Ale mam też problemy.

wprowadź opis zdjęcia tutaj

Ostatecznie powiązane tematy:

Mathias Conradt
źródło

Odpowiedzi:

23

W systemie Windows ścieżki należy określić za pomocą semantyki w stylu systemu Windows. Nie powinieneś używać wiodącego ukośnika przed ścieżką.

docker run -v c:\Users\[path]:c:\[containerPath]
Mathias Conradt
źródło
To nie działa, jeśli foldery zostały utworzone za pomocą polecenia kopiowania lub dodawania.
Steve Coleman,
katalog hosta może być również względny „./”, a wewnętrzny system operacyjny gościa może być systemem Linux typu os, więc regularna ścieżka linuxa „/ a / b / c /” jak, w oknie dokowanym skomponuj w ten sposób „woluminy: - ./:/var / www / html`
FantomX1,
7

Windows 10 Anniversary Update i Windows Server 2016 RTM.

Dodaj wolumin:

docker run -d -v my-named-volume:C:\MyNamedVolume testimage:latest

Zamontuj katalog hosta:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
Der_Meister
źródło