Невозможно подключить том между хостом и контейнером в docker

#docker #nginx #docker-volume #docker-image #ubuntu-20.04

#docker #nginx #docker-volume #docker-образ #ubuntu-20.04

Вопрос:

Надеюсь, у вас все хорошо в эти трудные времена.

Я новичок в docker и пытаюсь разместить простой статический контент, настроив index.html файл, который сохраняется в папке с именем «веб-сайт» на моем рабочем столе.

Моя конфигурация: Ubuntu-20.04 с версиями WSL2 и docker Docker 19.03.13, сборка 4484c46d9d на Windows 10 Home Single Language edition с версией ОС 10.0.19042 и сборкой 19042.

Я извлек последнее изображение nginx, но когда я пытаюсь подключить локальный хост-том к html-файлу внутри nginx, следуя инструкциям на странице docker nginx, он говорит

 host@HOST:~$ docker run --name website -v /mnt/c/Users/HOST/Desktop/website:usr/share/nginx/html:ro -d -p 8080:80 nginx:latest
docker: Error response from daemon: invalid volume specification: '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/<container id>:usr/share/nginx/html:ro': invalid mount config for type "bind": invalid mount path: 'usr/share/nginx/html' mount path must be absolute.
See 'docker run --help'.
 

Я попытался устранить неполадки в пути, но не могу найти, где изображения хранятся на моем компьютере. Единственная подсказка, которую я смог найти, была на форуме github:

 \wsl$docker-desktop-dataversion-pack-datacommunitydockervolumes
 

введите описание изображения здесь

Если я попытаюсь передать этот путь в качестве пути целевого контейнера, я все равно получу сообщение об ошибке.

Любая помощь приветствуется.

-Мэнни

Ответ №1:

В Windows пути должны быть названы с помощью Windows-style semantics . Вы не должны использовать косую черту перед путем.

 docker run -v c:Users[path]:c:[containerPath]
 

Комментарии:

1. Я пробовал это, но не могу найти, где хранится мой контейнер, и если я укажу исходный и целевой пути, используя семантику в стиле Windows, я получаю следующую ошибку: « host@HOST: ~ $ docker run —name website -v C:UsersHOSTDesktopwebsite:D:Containernginxhtml:ro -d -p 8080:80 nginx: последняя версия docker: ответ об ошибке от демона: недопустимая спецификация тома: ‘C: UsersHOSTDesktopwebsite: D: Containernginxhtml:ro’. См. раздел «запуск docker — справка». «`

Ответ №2:

Это было вызвано отсутствием / перед каталогом usr. Это то, что указывалось в ошибке:

 host@HOST:~$ docker run --name website -v /mnt/c/Users/HOST/Desktop/website:usr/share/nginx/html:ro -d -p 8080:80 nginx:latest
docker: Error response from daemon: invalid volume specification: '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/<container id>:usr/share/nginx/html:ro': invalid mount config for type "bind": invalid mount path: 'usr/share/nginx/html' mount path must be absolute.
See 'docker run --help'.
 

«недопустимая конфигурация монтирования для типа»bind»: недопустимый путь монтирования: путь монтирования’usr / share / nginx / html’ должен быть абсолютным».

Вместо этого он должен был быть:

 docker run --name website -v /mnt/c/Users/HOST/Desktop/website:/usr/share/nginx/html:ro -d -p 8080:80 nginx:latest