我想根据安装的可移动USB磁盘动态地改变容器中的目录内容umounting可移动驱动器后保持不变。为了实现这一点,我做了以下步骤。内容在容器的绑定安装目录安装/从主机
与
-v
选项,它安装在主机目录(/mnt
)插入容器(/share
)运行容器。假设新容器的名称是test。该命令应该看起来像docker run --name test -d -v /mnt:/share ubuntu:latest
。通过
docker exec -it test /usr/bin/bash
检查内容。目前,/share
为空。安装U盘到主机。执行
mount /dev/sdxY /mnt
命令。主机上的/mnt
目录现在包含存储在可移动USB磁盘上的文件和目录。再次检查内容的容器。容器中的
/share
目录仍为空。根本没有任何改变。
如果我反过来做:1)首先将USB磁盘挂载到主机,2)运行容器,3)卸载USB磁盘。容器中的内容保持不变,但主机上的/mnt
目录被扫描。
做码头工人,有一些机制来保持整个容器的内容同步和主机I加载/卸载磁盘后。
泊坞窗信息:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 1
Server Version: 17.03.1-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 14
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.8.0-46-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.684 GiB
Name: tri-xps
ID: LMPY:EGYU:QUAF:DPUF:GZNR:AHFS:URFD:EFW3:5DFV:WHR3:NAYJ:PKQV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
我试着用'--device'选项但失败。在将USB电缆插入主机之前,'/ dev'中没有适当的设备文件,例如'/ dev/sdb'。如果我首先连接USB电缆,然后使用'--device =/dev/sdb1'运行容器,则在从主机断开USB电缆后,设备仍然存在事件。 –
这篇文章将帮助你http://stackoverflow.com/questions/24225647/docker-any-way-to-give-access-to-host-usb-or-serial-device –
我用'搬运工运行测试 - 它--rm --privileged -v/dev/bus/usb:/ dev/bus/usb ubuntu bash',如果我在容器运行之前将其插入,则无法识别USB闪存驱动程序。 –