Файл монтирования панели инструментов 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>
Ответ 5
Я решил эту проблему, удалив строки томов.
Перейдите по ссылке: https://github.com/docker/docker-birthday-3/issues/92#issuecomment-199945602