Подтвердить что ты не робот

Как использовать параметр --volume с Docker Toolbox в Windows?

Как я могу совместно использовать папку между моими файлами Windows и контейнером докеров, путем установки тома с помощью простой команды --volume с помощью Docker Toolbox?

Я использую "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'.
4b9b3361

Ответ 1

На самом деле это проблема проекта, и есть 2 рабочих обхода:

  • Создание тома данных:

    docker create -v //c/Users/myuser:/myuser --name data hello-world
    winpty docker run -it --rm --volumes-from data ubuntu
    
  • SSHing непосредственно в хосте docker:

    docker-machine ssh default
    

    И оттуда делать классику:

    docker run -it --rm --volume /c/Users/myuser:/myuser ubuntu
    

Ответ 2

Это улучшение выбранного ответа, потому что этот ответ ограничен папкой c:\Users. Если вы хотите создать том, используя каталог за пределами c:\Users, это расширение.

В Windows 7 я использовал панель инструментов докеров. Он использовал Virtual Box.

  • Открыть виртуальный ящик
  • Выберите аппарат (в моем случае по умолчанию).
  • Щелкните правой кнопкой мыши и выберите параметры настройки
  • Перейти к общим папкам
  • Включить новую папку с машиной.

Например, в моем случае я включил:

**Name**: c:\dev
**Path**: c/dev
  1. Нажмите и закройте
  2. Откройте "Docker Quickstart Terminal" и перезапустите докер-машину.

Используйте эту команду:

$ docker-machine restart

Чтобы убедиться, что он сработал, выполните следующие действия:

  • SSH к докерной машине.

С помощью этой команды:

$ docker-machine ssh
  1. Перейдите в папку, которую вы поделили/установили.

В моем случае я использую эту команду

$ cd /c/dev
  1. Проверьте владельца папки. Вы можете использовать "ls -all" и убедиться, что владелец будет "докерером"

Вы увидите что-то вроде этого:

[email protected]:/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

Обе команды работают для меня. Надеюсь, это будет полезно.

Ответ 3

С августа 2016 года Docker для Windows теперь использует Hyper-V напрямую, а не VirtualBox, так что я думаю, что это немного по-другому. Сначала поделитесь диском в настройках, затем используйте формат буквы диска C: но используйте косую черту. Например, я создал каталог H:\t\REDIS и смог увидеть его смонтированным в /data в контейнере с помощью этой команды:

docker run -it --rm -v h:/t/REDIS:/data redis sh

Тот же формат, использующий букву диска и двоеточие, затем прямую косую черту для разделителя пути, работал как из командной строки Windows, так и из git bash.

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

enter image description here

Итак, во-первых, вы должны предоставить общий доступ к диску в виртуальной машине в настройках здесь, я думаю, что это дает виртуальной машине "докер-машина", работающей в hyper-v, доступ к этому диску. Затем вы должны использовать формат, показанный там, который, кажется, существует только на этом одном изображении и не содержит никакой документации или вопросов, которые я мог бы найти в Интернете:

docker run --rm -v c:/Users:/data alpine ls /data

Ответ 4

Попробуйте следующее:

  • Откройте терминал быстрого запуска Docker. Если он уже открыт, запустите $ cd ~, чтобы убедиться, что вы находитесь в каталоге пользователя Windows.
  • $ docker run -it -v /$(pwd)/ubuntu:/windows ubuntu

Он будет работать, если ошибка вызвана опечаткой. Вы получите пустую папку с именем ubuntu в своем каталоге пользователя. Вы увидите эту папку с именем windows в контейнере ubuntu.

Ответ 5

Для тех, кто использует Виртуальный ящик, который предпочитает подход командной строки

1) Убедитесь, что докер-машина не работает

Клемма быстрого запуска Docker:

docker-machine stop

2) Создайте совместно используемый Windows ↔ 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) Запустите докер-машину и установите том в новый контейнер

Доклерский терминал быстрого запуска:
(Опять же, я запускаю контейнер 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

Ответ 6

Если вы ищете решение, которое решит все проблемы Windows и заставит его работать в ОС Windows так же, как в Linux, то смотрите ниже. Я проверил это, и это работает во всех случаях. Я также показываю, как я это понимаю (шаги и процесс мышления). Я также написал статью об использовании Docker и решении проблем с Docker.

Решение 1. Используйте VirtualBox (если вы считаете, что это не очень хорошая идея, см. Решение 2 ниже)

  • Откройте VirtualBox (он уже установлен вместе с инструментами докера)
  • Создать виртуальную машину
  • (Это необязательно, вы можете пропустить его и перенаправить порты с виртуальной машины.) Создайте вторую сетевую карту - соединенную мостом, таким образом она будет получать IP-адрес от вашей сети (у нее будет IP, как у док-машины)
  • Установите 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 (он уже установлен вместе с инструментами докера)
  • Создайте виртуальную машину со второй сетевой картой, соединенной мостом, таким образом она получит IP-адрес из вашей сети (у него будет IP, как у докера)
  • Установите Ubuntu LTS, который установлен совсем недавно (не старше нескольких месяцев)
  • Обратите внимание, что автомонтирование на самом деле не работает, а интеграция нарушена (например, совместное использование буфера обмена и т.д.)
  • Удалить виртуальную машину
  • Выйди и выпей
  • Арендуй дорогой автомобиль и езжай с большой скоростью по шоссе
  • Уничтожь машину и умри
  • Возрождение перед вашим ПК
  • Установите Ubuntu LTS старше 1 года
  • Попробуй запустить докер
  • Обратите внимание, что он не установлен
  • Установите docker с помощью 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
  • Установите докер используя официальное руководство https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • Добавьте общие каталоги на виртуальную машину и автоматически смонтируйте каталоги вашего проекта (таким образом у вас есть доступ к каталогу проекта из Ubuntu, так что вы можете запустить любую команду docker)
  • Готово

Ответ 7

Я решил это!

Добавьте громкость:

docker run -d -v my-named-volume: C:\MyNamedVolume testimage: последний

Установите каталог хоста:

docker run -d -v C:\Temp\123: C:\My\Shared\Dir testimage: последний

Ответ 8

Простое использование двойных наклонных черт коснулось меня в Windows 7:

docker run --rm -v //c/Users:/data alpine ls /data/

Взято отсюда: https://github.com/moby/moby/issues/12590

Ответ 9

расшарить папки VirtualBox и Windows 7

используя... Docker Quickstart Terminal [QST] Проводник Windows [WE]

Давайте начнем...

  1. [QST] открыть терминал быстрого запуска Docker

  2. [QST] остановка виртуальной машины

$ docker-machine stop

  1. [WE] открыть проводник

  2. [WE] перейти в каталог установки virtualBox

  3. [WE] открыть cmd и выполнить...

C:\Program Files\Oracle\VirtualBox> Общая папка VBoxManage добавляет "default" --name "/d/SVN_FOLDERS/X2R2_WP6/nodejs" --hostpath "\?\D:\SVN_FOLDERS\X2R2_WP6\nodejs" --automount

  1. проверьте в виртуальной машине оракула, что новая общая папка появилась

  2. [QST] запуск виртуальной машины

$ docker-machine start

  1. [QST] запустить контейнер nodejs

Docker Stop Nodejs

Docker Rm Nodejs

запуск докера -d -i t --rm --name nodejs -v/d/SVN_FOLDERS/X2R2_WP6/nodejs: /usr/src/app -w/usr/src/app node2

  1. [QST] открыть bash для exec контейнера докера -i -t nodejs/bin/bash

  2. [QST] выполните dir, и вы увидите общие файлы

Ответ 10

Привет, я пробую все на этой странице. Я работаю в Windows 7 с панелью инструментов докеров, обновление до Windows 10 сейчас не является вариантом для компании.  Я пытался установить папку C:/nuget, но проблема в том, что докеры разрешают монтировать каталоги внутри вашей папки "Пользователь" (c:/User/YourUser/) в окнах.