Rya*_*n R 6 mount automount docker
我想挂载和卸载 USB 驱动器,以便在运行时可以从 Docker 容器中看到它们的内容。我已将目录映射到 USB 驱动器将安装到的容器。
问题:
这是我尝试过的:
我将安装一个 USB 到目录 /some_folder/usb映射到 Ubuntu 18.04 LTS w/ 4.15 内核上的 docker 容器中。
启动一个容器,卷/some_folder映射到其中的同名目录:
$ docker run --name mycontainer -it -v /some_folder:/some_folder ubuntu bash
Run Code Online (Sandbox Code Playgroud)
从容器中分离 (CTRL+P+Q),连接 USB 驱动器并将其以 root 身份挂载到主机目录:
$ mount /dev/sda1 /some_folder/usb/
Run Code Online (Sandbox Code Playgroud)
安装选项:
$ 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)
Run Code Online (Sandbox Code Playgroud)
验证是否有文件挂载到主机目录:
$ 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
Run Code Online (Sandbox Code Playgroud)
进入容器,查看映射目录:
$ docker exec -it mycontainer bash
root@mycontainer# ls -al /some_folder/usb
Run Code Online (Sandbox Code Playgroud)
已安装文件夹的内容在容器内为空。
小智 0
我知道这个问题很老了,但解决方案是使用绑定安装并将“绑定传播”设置为“共享”。
例子:
docker run --name mycontainer -it --mount type=bind,source=/some_folder,target=/some_folder,bind-propagation=shared ubuntu bash
Run Code Online (Sandbox Code Playgroud)
有关绑定传播的更多信息:https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation