Файл монтирования панели инструментов docker на окнах

Я начинаю с докеров, и я использую машину для Windows. Но у меня есть проблема с монтированием файлов с использованием томов. В документации говорится о файлах монтирования в OSX и окнах:

Официальные документы докеров:

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

→ перейдите к док-станциям докеров

У меня есть небольшой файл nginx Dockerfile

Dockerfile

FROM centos:6.6

MAINTAINER afym

ENV WEBPORT 80

RUN yum -y update; yum clean all

RUN yum -y install epel-release; yum clean all

RUN yum -y install nginx; yum clean all

RUN echo "daemon off;" >> /etc/nginx/nginx.conf

VOLUME /usr/share/nginx/html

EXPOSE $WEBPORT

CMD [ "/usr/sbin/nginx" ]

Создание простого контейнера

docker run -d --name simple -p 8082:80 ng1

8875448c01a4787f1ffe4c4c5c492efb039e452eff957391ac52a08915e18d66

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

Создание контейнера с томом

Мой каталог хостов Windows

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

Создание контейнера докеров с опцией -v

docker run -d --name simple2 -v /c/Users/src:/usr/share/nginx/html -p 8082:80 ng1
invalid value "C:\\Users\\src;C:\\Program Files\\Git\\usr\\share\\nginx\\html" 
for flag -v: bad mount mode specified 
: \Program Files\Git\usr\share\nginx\html
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.

Проверка изображения ng1

docker inspect ng1

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

Что не так, когда я создаю контейнер докера с томом?

Спасибо.

Ответ 1

Попробуйте запустить его с дополнительным / для тома, например:

docker run -d --name simple2 -v /c/Users/src://usr/share/nginx/html -p 8082:80 ng1

Или даже для ОС хоста, поскольку

docker run -d --name simple2 -v //c/Users/src://usr/share/nginx/html -p 8082:80 ng1

Из-за этого issue:

Это то, что среда MSYS делает для сопоставления путей POSIX к путям Windows, прежде чем передавать их в исполняемые файлы.

Ответ 2

Для тех, кто использует докеры ~ > 1.12 и сталкивается с этой проблемой. Я потратил 30 минут, пытаясь понять это, пока я не понял, что вам нужно сначала поделиться диском с помощью настроек докеров, см. https://docs.docker.com/docker-for-windows/#/shared-drives

Ответ 3

Если вы просто ищете доступ к локальному диску, терминал MINGW32 Docker Toolbox помещает корень каждого диска в /<drive-letter>, поэтому диск C:\ будет в /c/

Ответ 4

Как сказал ОП:

Официальные документы докера:

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

Но если вам нужен доступ к другим каталогам, вам нужно добавить новую общую папку в настройки виртуального ящика (Настройки> Общие папки> Добавить общий ресурс).

Добавьте туда новый общий ресурс (возможно только при остановке виртуальной машины, docker-machine stop:

path C:\Projects
name c/Projects
autoMount yes

Или отредактируйте файл конфигурации vbox напрямую
C:\Users\<username>\.docker\machine\machines\default\default\default.vbox

Добавьте туда в <SharedFolders> строку

<SharedFolder name="c/Projects" hostPath="\\?\c:\Projects" writable="true" autoMount="true"/>

Перезагрузите компьютер:

docker-machine stop
docker-machine start

Теперь можно также монтировать каталоги с базой C:\Projects

docker run -v //c/Projects/myApp://myApp <myImage>