Dockerfile в Windows 10 Linux Subsystem не может найти файл в текущем каталоге - PullRequest
0 голосов
/ 21 января 2019

У меня есть Dockerfile с этой последней строкой:

CMD ["./watch.sh"]

Который просто запускает npm run watch. В линуксе все работает нормально. Но в Windows 10 Subsytem для Linux (WSL) docker выдаст ошибку, сообщив, что не может найти файл. В другом Dockerfile, который запускается python <SOMEFILE.PY>, он также говорит, что не может найти файл.

Я уже установил их в /etc/wsl.conf:

[automount]
root = /
options = "metadata"

Я запустил docker в своем процессе имени пользователя и уже поместил свое имя в группу Docker. Так что я не запускаю его как sudo. Разрешения на файлы также есть в моей учетной записи.

Редакция: Я просто понимаю, что мне нужно запустить docker клиент как sudo. Из Bash WSL кажется, что он не может найти механизм докера, который находится в Windows, доступ через tcp: // localhost: 2375

$ sudo usermod -aG docker root
$ sudo docker build -t build-minimal .
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Когда я запускаю Docker без sudo, он работает.

1 Ответ

0 голосов
/ 23 января 2019

Нашли это! Ответ - права доступа к файлу.

Мое намерение использовать WSL - иметь полностью совместимую среду Linux, но при этом работать с Windows. Следовательно, обмен файлами между Linux и Windows должен быть выполнен правильно.

Раньше моей ошибкой была просто символическая ссылка из Linux на мой файл Windows (приложение Python Flask). Это плохо, потому что права доступа к файлам не будут сохранены / прочитаны правильно.

Решение:

  • Ссылка на каталог вашего кода / данных находится в папке Windows
  • Если это git-репозиторий, выполните git clone из поля WSL
  • Это позволит правильно сохранить права доступа к файлам, и вы по-прежнему сможете без проблем получать к ним доступ как из WSL / Windows
...