从主机装载/卸载可移动驱动器后,容器绑定安装目录中的内容保持不变



我想根据已安装的可移动USB磁盘动态更改容器目录中的内容。为了实现这一目标,我执行以下步骤。

  1. 使用-v选项运行容器,将主机目录(/mnt(安装到容器(/share(中。假设新容器的名称为 test 。该命令看起来像docker run --name test -d -v /mnt:/share ubuntu:latest

  2. 通过docker exec -it test /usr/bin/bash检查内容。目前,/share是空的。

  3. 将USB磁盘安装到主机。执行mount /dev/sdxY /mnt命令。主机上的/mnt目录现在包含存储在可移动USB磁盘上的文件和目录。

  4. 再次检查容器中的内容。容器中的/share目录仍然为空。根本没有任何改变。

如果我相反地执行此操作:1(首先将USB磁盘安装到主机,2(运行容器,3(USB磁盘。容器中的内容保留在保留下,但是主机上的/mnt目录被扫除。

do docker具有一些机制,可以在我安装/安装磁盘后保持内容在容器上和主机上同步。


Docker信息:

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

您可以使用 - 设备选项直接在容器中访问USB设备。

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

更多文档可在https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container-- device

对不起,我的晚期帖子。在Docker的官方GitHub页面上创建问题之后。@cpuguy83给了我答案。https://github.com/moby/moby/issues/32512。

使安装操作传播到容器上,请将slave标志附加到-v选项。例如:

-v media/usb:/smb_share:slave

有关更多信息,请检查此处。

最新更新