Docker / Windows Container: как смонтировать папку хоста как том данных в Windows 2016

17

Как смонтировать том с хоста Windows на гостевую систему Windows?

Я на Windows Server 2016 TP4 с помощью Docker.

Следуя документации на https://docs.docker.com/engine/userguide/containers/dockervolumes/

Если вы используете Docker Machine на Mac или Windows, ваш демон Docker имеет только ограниченный доступ к вашей файловой системе OS X или Windows. Docker Machine пытается автоматически предоставить общий доступ к вашему каталогу / Users (OS X) или C: \ Users (Windows). Таким образом, вы можете монтировать файлы или каталоги в OS X, используя.

В Windows смонтируйте каталоги, используя:

Докер запускает -v / c / Users / [путь]: / [путь контейнера] ... `

Я старался:

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

что дает мне ошибку:

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

Я также попробовал:

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

Обратите внимание, что путь C: \ meinedaten в гостевом / контейнере уже существует, что требуется согласно документации докера.

Команда выглядит правильно для меня согласно документации.

введите описание изображения здесь

(Монтирование томов с хоста Mac OS X в док-контейнер Ubuntu работает нормально, у меня просто проблемы с Windows.)

Обновить

Я также попытался использовать Windows Containers изначально (через Powershell), не используя Docker. Я следую документации по 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

Но у меня тоже есть проблемы.

введите описание изображения здесь

В конце концов связанные темы:

Матиас Конрадт
источник

Ответы:

23

В Windows пути должны быть указаны с использованием семантики в стиле Windows. Вы не должны использовать ведущий слеш перед дорожкой.

docker run -v c:\Users\[path]:c:\[containerPath]
Матиас Конрадт
источник
Это не работает, если вы создали папки с помощью команды копирования или добавления.
Стив Коулман
dir хоста также может быть относительным "./", а гостевая внутренняя ОС может быть ОС Linux типа linux, поэтому обычный путь linux "/ a / b / c /", как в docker, составить таким образом `volume: - ./:/var / www / html`
FantomX1
7

Windows 10 Anniversary Update и Windows Server 2016 RTM.

Добавить том:

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

Смонтируйте каталог хоста:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
Der_Meister
источник