Как использовать опцию --volume с Docker Toolbox в Windows?
Как я могу совместно использовать папку между моими файлами Windows и контейнером docker, монтируя том с помощью простой команды --volume
с помощью Docker Toolbox on?
Я использую "Docker Quickstart Terminal" и когда я пытаюсь это сделать:
winpty docker run -it --rm --volume /C/Users/myuser:/myuser ubuntu
У меня есть такая ошибка:
Invalid value "C:\Users\myuser\:\myuser" for flag --volume: bad mount mode specified : myuser
See 'docker run --help'.
Следуя этому , я также попробовал
winpty docker run -it --rm --volume "//C/Users/myuser:/myuser" ubuntu
И получил
Invalid value "\\C:\Users\myuser\:\myuser" for flag --volume: myuser is not an absolute path
See 'docker run --help'.
7 ответов:
Это улучшение выбранного ответа, потому что этот ответ ограничен c:\Users папка. Если вы хотите создать том, используя каталог за пределами c:\Users это расширение.
В windows 7 я использовал Docker toolbox. Он использовал виртуальный ящик.
- открыть виртуальный ящик
- выберите машину (в моем случае по умолчанию).
- щелкните правой кнопкой мыши и выберите пункт Настройки
- перейти к общим папкам
- включите новую машинную папку.
Например, в моем случае я включил:
**Name**: c:\dev **Path**: c/dev
- нажмите и закройте
- откройте "Docker Quickstart Terminal"и перезагрузите компьютер docker.
Используйте следующую команду:
Чтобы убедиться, что он работает, выполните следующие действия:$ docker-machine restart
- SSH на докер-машину.
Используя эту команду:
$ docker-machine ssh
- перейдите в папку, к которой вы подключили общий доступ.
В моем случае я использую это команда
$ cd /c/dev
- Проверьте владельца папки пользователя. Вы можете использовать "ls-all" и проверить, что владельцем будет "docker"
Вы увидите примерно следующее:
docker@default:/c/dev$ ls -all total 92 drwxrwxrwx 1 docker staff 4096 Feb 23 14:16 ./ drwxr-xr-x 4 root root 80 Feb 24 09:01 ../ drwxrwxrwx 1 docker staff 4096 Jan 16 09:28 my_folder/
В этом случае вы сможете создать том для этой папки.
Вы можете использовать следующие команды:
docker create -v /c/dev/:/app/dev --name dev image docker run -d -it --volumes-from dev image
Или
docker run -d -it -v /c/dev/:/app/dev image
Обе команды работают на меня. Надеюсь, это будет полезно.
Это фактически проблема проекта и есть 2 рабочих обходных пути:
Создание тома данных:
docker create -v //c/Users/myuser:/myuser --name data hello-world winpty docker run -it --rm --volumes-from data ubuntu
Сшивание непосредственно в Хосте docker:
docker-machine ssh default
И оттуда делаем классику:
docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
С августа 2016 года Docker для windows теперь использует hyper-v напрямую вместо virtualbox, поэтому я думаю, что это немного отличается. Сначала разделите диск в настройках, затем используйте формат
C:
букв диска, но используйте прямые косые черты. Например, я создал каталогH:\t\REDIS
и смог увидеть его смонтированным на/data
в контейнере с помощью следующей команды:docker run -it --rm -v h:/t/REDIS:/data redis sh
Тот же формат, используя букву диска и двоеточие, а затем прямые косые черты для разделителя путей работал как из командной строки windows и с помощью Git Баш.
Я нашел этот вопрос в Гугле, чтобы найти ответ, но я не мог найти ничего, что работало. Казалось бы, все работает без ошибок, но я просто не мог видеть данные на хосте (или наоборот). Наконец я внимательно проверил настройки и попробовал формат, который они показывают:Итак, сначала вы должны поделиться всем диском с виртуальной машиной docker в настройках здесь, я думаю, что это дает виртуальную машину "docker-machine", работающую в hyper-v доступ к этому диску. Затем вы должны использовать формат, показанный здесь, который, кажется, существует только на этом изображении и ни в одной документации или вопросах, которые я мог бы найти в интернете:
docker run --rm -v c:/Users:/data alpine ls /data
Попробуйте это:
- Откройте Docker Quickstart Terminal . Если он уже открыт, запустите
$ cd ~
, чтобы убедиться, что вы находитесь в каталоге пользователей Windows.$ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu
Он будет работать, если ошибка вызвана опечаткой. Вы получите пустую папку с именем
ubuntu
в вашем каталоге пользователя. Вы увидите эту папку с именемwindows
в вашем контейнере ubuntu.
Для тех, кто использует виртуальный ящик , кто предпочитает подход командной строки
1) Убедитесь, что докер-машина не запущена
Docker Quickstart Terminal:
docker-machine stop
2) Создайте окно общего доступа docker-machine
Командная строка Windows:
(Измените следующее, чтобы соответствовать вашему сценарию. Я загружаю свой контейнер Apache httpd из каталога, синхронизированного через Dropbox.)set VBOX=D:\Program Files\Oracle\VirtualBox\VBoxManage.exe set VM_NAME=default set NAME=c/htdocs set HOSTPATH=%DROPBOX%\htdocs "%VBOX%" sharedfolder add "%VM_NAME%" --name "%NAME%" --hostpath "%HOSTPATH%" --automount
3) запустите докер-машину и установите том в новый контейнер
Терминал Быстрого Запуска Docker:
(Опять же, я запускаю контейнер Apache httpd, следовательно, этот порт открыт.)docker-machine start docker run -d --name my-apache-container-0 -p 80:80 -v /c/htdocs:/usr/local/apache2/htdocs my-apache-image:1.0
Если вы ищете решение, которое разрешит все проблемы Windows и заставит его работать на операционной системе Windows так же, как и на Linux, то смотрите ниже. Я проверил это, и это работает во всех случаях. Я также показываю, как я его получаю (шаги и мыслительный процесс).
Решение 1: Используйте VirtualBox (если вы считаете, что это не очень хорошая идея, смотрите решение 2 ниже)
- Откройте VirtualBox (он уже установлен вместе с инструментами docker)
- создать виртуальную машину с вторая карта ethernet-Мостовая, таким образом, она получит IP-адрес из вашей сети (у нее будет IP, как у docker machine)
- Установите Ubuntu LTS, который старше 1 года
- Установить докер
- Добавьте общие каталоги в виртуальную машину и автомонтируйте каталоги проекта (таким образом, вы получите доступ к каталогу проекта из Ubuntu) , но все еще можете работать в Windows
- сделано
Бонус:
- все работает так же, как и на Linux
- приостанавливайте / отключайте докеризованную среду всякий раз, когда вы хотите
Решение 2: Используйте VirtualBox (это очень похоже на решение 1, но оно также показывает процесс мышления, который может быть полезен при решении подобных проблем)
- прочитайте, что кто-то перемещает папки в /C / Users / Public, и это работает https://forums.docker.com/t/sharing-a-volume-on-windows-with-docker-toolbox/4953/2
- попробуйте, поймите, что в этом нет особого смысла. ваш случай.
- прочитайте всю страницу здесь https://github.com/docker/toolbox/issues/607 и попробуйте все решения, перечисленные на странице
- Найдите эту страницу (ту, которую вы сейчас читаете) и попробуйте все решения из других комментариев
- Найдите где-нибудь информацию о том, что установка переменной окружения COMPOSE_CONVERT_WINDOWS_PATHS=1 может решить проблему.
- прекратите искать решение в течение нескольких месяцев
- вернитесь назад и проверьте те же ссылки еще раз
- плачь глубоко
- почувствуйте момент просветления
- Откройте VirtualBox (он уже установлен вместе с инструментами docker)
- создайте виртуальную машину со второй картой ethernet-мостом, таким образом, она получит IP-адрес из вашей сети (у нее будет IP, как у docker machine)
- Установите Ubuntu LTS, который совсем недавно (не старше нескольких месяцев)
- Обратите внимание, что автомонтирование на самом деле не работает, и интеграция нарушена (например, обмен буфером обмена и т.д.)
- удалить виртуальную машину
- выйди и выпей
- Возьмите напрокат дорогой автомобиль и поезжайте с большой скоростью по шоссе
- уничтожьте машину и умрите
- респаун перед вашим ПК
- Установите Ubuntu LTS, который старше 1 года
- попробуйте запустить docker
- Обратите внимание, что он не установлен
- Install docker by apt-get install docker
- рекомендуется установить docker.io
- попробуйте запустить docker-compose
- Обратите внимание, что это не так. установлено
- apt get install docker-compose
- попробуйте запустить свой проект с помощью docker-compose
- Обратите внимание, что это старая версия
- Проверьте уровень мощности (он должен быть более 9000)
- Поиск как установить последнюю версию docker и найти официальное руководство https://docs.docker.com/install/linux/docker-ce/ubuntu/
- удалите текущий docker-compose и docker.io
- Установка docker с помощью официального руководства https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Добавьте общие каталоги в виртуальную машину и автомонтируйте каталоги проекта (таким образом, у вас есть доступ к каталогу проекта из Ubuntu, так что вы можете запустить любую команду docker)
- сделано