В чем разница между этими двумя командами запуска докеров и почему одна работает, а другая нет?
Рабочая команда
docker run --publish=7474:7474 --volume=$HOME/neo4j_test/data:/data neo4j
Не работает
docker run --publish=7474:7474 --volume=C:/Users/USERNAME/neo4j_test/data:/data neoj
docker run --publish=7474:7474 --volume=C:\Users\USERNAME\neo4j_test\data:/data neo4j
Ошибка для этих команд
C: \ Program Files \ Docker Toolbox \ docker.exe: ответ об ошибке от демона: недопустимая спецификация подключения привязки «C: UsersUSERNAMEneo4j_testdata: / data»: недопустимый режим: / data. См. 'C: \ Program Files \ Docker Toolbox \ docker.exe run --help'.
В нерабочих командах я просто заменил $HOME
абсолютным путем к папке моего профиля пользователя C:/Users/USERNAME
ОБНОВЛЕНИЕ
Я действительно проверил значение для $HOME
, выполнив echo $HOME
в Windows Powershell. И это на самом деле C:\Users\USERNAME
. Я также посмотрел на ссылку, которую прокомментировал @Titouan Freville. Итак, я использовал команду
docker run --publish=7474:7474 --volume=/c/Users/USERNAME/neo4j_test/data:/data neo4j
Вместо того
docker run --publish=7474:7474 --volume=C:/Users/USERNAME/neo4j_test/data:/data neoj
И теперь он работает. Прямо сейчас мне интересно, где происходит преобразование $HOME
из C:\Users\USERNAME
в /c/Users/USERNAME
2 ответа
Чтобы закрыть тему. Вот решение;) файл монтирования панели инструментов Docker в Windows
Кроме того, интерполяция $ HOME докером в Windows должна быть совместима с ним, поэтому он должен преобразовывать его самостоятельно, когда вы вызываете его в команде докера.
Для тех, кто все еще имеет эту проблему с Docker-for-Windows, вот 2 эффективных решения:
- Добавьте к команде префикс
MSYS_NO_PATHCONV=1
- полностью:MSYS_NO_PATHCONV=1 docker run -v /c/path:/path
- Используйте двойную косую черту
//
в начале - полностью:docker run -v //c/path:/path
Источник: https://github.com/moby/moby/issues/24029# issuecomment-250412919
Похожие вопросы
Связанные вопросы
Новые вопросы
docker
По вопросам создания и запуска контейнеров Docker. ВОПРОСЫ ПО DOCKER ДОЛЖНЫ ОТНОСИТЬСЯ К РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. Подходящие темы включают Dockerfiles, Docker Compose и архитектуру. Как правило, если ваш вопрос о том, что происходит внутри контейнера, он, вероятно, здесь по теме; если это вне контейнера, это, вероятно, не по теме.