Ответ 1
Я получил эту ошибку после изменения пароля Windows. Мне пришлось зайти в настройки Docker и выполнить "Сброс учетных данных" в разделе "Shared Drives", а затем перезапустить Docker.
Почему Docker пытается создать папку, которую я монтирую? Если я перейду на C:\Users\szx\Projects
docker run --rm -it -v "${PWD}:/src" ubuntu /bin/bash
Эта команда завершается со следующей ошибкой:
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: error while creating mount source path '/c/Users/szx/Projects': mkdir /c/Users/szx/Projects: file exists.
Я использую Docker Toolbox на Windows 10 Home.
Я получил эту ошибку после изменения пароля Windows. Мне пришлось зайти в настройки Docker и выполнить "Сброс учетных данных" в разделе "Shared Drives", а затем перезапустить Docker.
Убедитесь, что папка используется совместно со встроенной виртуальной машиной докера. Это отличается от различных типов докеров для настольных установок. Я считаю, что с помощью панели инструментов вы можете найти общие папки в конфигурации VirtualBox. Следует также отметить, что эти каталоги чувствительны к регистру. Один из способов отладки - попробовать:
docker run --rm -it -v "/:/host" ubuntu /bin/bash
И посмотрите, как выглядит файловая система в разделе "/host".
Если вы работаете с отдельным пользователем Windows, с которым вы делитесь томом (C: обычно): вам нужно убедиться, что у него есть доступ к папкам, с которыми вы работаете - включая их родителей, вверх в ваш домашний каталог.
Также убедитесь, что EFS (шифрованная файловая система) отключена для общих папок.
Смотрите также мой ответ здесь.
Вы использовали этот контейнер раньше? Вы можете попытаться удалить все докеры-тома перед повторным выполнением своей команды.
docker volume rm '(docker volume ls -qf dangling=true)'
Я пробовал вашу команду локально (MacOS) без каких-либо ошибок.
Я столкнулся с этой ошибкой, когда другой запущенный контейнер уже использовал папку, которая монтируется в команде запуска docker. Пожалуйста, проверьте на то же самое и, если не нужно, остановите контейнер. Лучшее решение - использовать том с помощью следующей команды:
том докера
затем смонтировать этот созданный том, если он должен использоваться несколькими контейнерами.