Я хотел бы монтировать и размонтировать USB-накопители, чтобы их содержимое можно было увидеть из контейнера Docker во время его работы. Я сопоставил каталог с контейнером, к которому будут подключены USB-накопители.
Проблема:
Вот что я пробовал:
Я буду монтировать USB в каталог / some_folder / usb
, который сопоставлен с контейнером докеров в Ubuntu 18.04 LTS с ядром 4.15.
Запустите контейнер с томом / some_folder
, сопоставленным с одноименным каталогом внутри него:
$ docker run --name mycontainer -it -v /some_folder:/some_folder ubuntu bash
Отсоедините от контейнера (CTRL + P + Q), подключите USB-накопитель и подключите его к каталог хоста в качестве корневого:
$ mount /dev/sda1 /some_folder/usb/
Параметры монтирования:
$ mount | grep -i sda1
/dev/sda1 on /some_folder/usb type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
Проверить, есть ли файлы, смонтированные в каталог хоста:
$ ls -al /some_folder/usb/
drwxr-xr-x 10 root root 8192 Jan 1 1970 .
drwxr-xr-x 3 root root 1024 Mar 13 16:44 ..
drwxr-xr-x 5 root root 8192 Jul 20 2018 files
Войдите в контейнер и проверьте сопоставленный каталог:
$ docker exec -it mycontainer bash
root@mycontainer# ls -al /some_folder/usb
Содержимое смонтированной папки пусто внутри контейнера.
Я знаю, что вопрос старый, но решением было бы использование bind-mounts и установка для «распространения привязки» значения «shared».
Пример:
docker run --name mycontainer -it --mount type=bind,source=/some_folder,target=/some_folder,bind-propagation=shared ubuntu bash
Дополнительная информация о распространении привязки: https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation