Как использовать параметр -v volume в Docker в подсистеме Windows для Linux - PullRequest
0 голосов
/ 26 ноября 2018

Моя версия для Windows 10 - 1803

Я устанавливаю Docker, ссылка:

https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly

Я пытаюсь использовать -v docker как:

docker run -it -v ~/.aws:root/.aws/ ubuntu

Я также пытаюсь использовать:

docker run -it -v $(realpath ~/.aws):/root/.aws ubuntu

Но я нахожу, что томов, которые я хочу сопоставить с докерной системой, там нет.

когда я делаю:

ls /root/.aws

всегда пусто, как сопоставить тома данных в подсистеме Windows для Linux?

Ответы [ 3 ]

0 голосов
/ 08 мая 2019

Этот вопрос немного устарел, но у меня была такая же проблема.Ниже моя конфигурация:

  • ОС хоста: Windows 10.0.17134 N / A Build 17134
  • WSL:
    • 4.4.0-17134-Microsoft # 706-Microsoft
    • Ubuntu 18.04.1 LTS
  • Docker:
    • Docker-ce на WSL: версия Docker 18.09.6, сборка 481bc77
    • Docker для Windows ce: Версия 2.0.0.3 (31259) сборка 8858db3

Следующее решение в основном полезно при работе на вашем ноутбуке с докером в качестве среды разработки.Не следует использовать на производственных / тестовых серверах:

  1. Совместное использование папки между WSL и Windows 10.
  2. Скопируйте файлы, необходимые для совместного использования с контейнерами Docker, в общую папку,Это позволяет файлам быть видимыми / доступными как для WSL, так и для Windows 10.
  3. запустить докер-контейнер, привязывающий том, используя имя тома в стиле Windows

Ниже приведены команды:

  1. На хост-компьютере Windows создайте папку на компьютере с Windows

    md %USERPROFILE%\dockerVolume
    
  2. На WSL свяжите эту папку с домашней страницей пользователя WSLпапка

    ln -s `wslpath $(cmd.exe /C "echo %USERPROFILE%")|sed -e 's/\r//g'`/dockerVolume $HOME/dockerVolume
    
  3. На WSL скопируйте все файлы, к которым вам нужен доступ из контейнера Docker, в $ HOME / dockerVolume
  4. Затем запустите контейнер Docker как:

    docker run -it -v `cmd.exe /C "echo %USERPROFILE%"|sed 's/\r/\\\dockerVolume/g'`:/dockerVolume -w /dockerVolume --entrypoint /bin/bash <DOCKER IMAGE NAME>
    
0 голосов
/ 19 августа 2019

Ответ выше от Serge работает, но я покончил с частью cmd.exe и просто заключил путь в стиле Windows в одинарные кавычки.

У меня такая же проблема с Docker for Desktop, работающим внутри WSL, но нечитая мою папку ~ / .aws.Моя папка .aws - это мягкая ссылка из папки C: \ Users \ .aws.

Вот что у меня сработало:

docker run -v 'C:\Users\username\.aws':/root/.aws linux_image
0 голосов
/ 30 ноября 2018

Docker для Windows работает поверх самой Windows, но не знает WSL.

В WSL:

  • Дистрибутивы могут видеть содержимое "дисков" Windows через автоматически монтируемые дискипод /mnt/<drive-letter>
  • В настоящее время Windows не может получить доступ к файловым системам установленных дистрибутивов Linux.Мы работаем над исправлением этого в будущих выпусках;)

Хотя сам Docker Engine не может работать в WSL, вы можете установить Docker для Windows и управлять им из WSL, используяинструмент командной строки docker, указывающий имя хоста с помощью аргумента -h или экспорт в DOCKER_HOST в вашем .bashrc.

Некоторые из этих руководств могут оказаться полезными:

...