Попытка смонтировать / размонтировать USB-накопители, чтобы их содержимое можно было увидеть в контейнере Docker во время его работы

Я хотел бы монтировать и размонтировать USB-накопители, чтобы их содержимое можно было увидеть из контейнера Docker во время его работы. Я сопоставил каталог с контейнером, к которому будут подключены USB-накопители.

Проблема:

  • Докер-контейнер не может видеть папки / файлы, которые подключены к его сопоставленной папке тома, если контейнер был запущен до подключения USB-накопителей.
  • Если контейнер запускается после монтирования 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

Содержимое смонтированной папки пусто внутри контейнера.

5
задан 18 March 2019 в 10:58

1 ответ

Я знаю, что вопрос старый, но решением было бы использование 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

0
ответ дан 2 January 2020 в 23:12

Другие вопросы по тегам:

Похожие вопросы: