从主机

时间:2017-04-16 04:22:03

标签: docker filesystems mount

我想根据已安装的可移动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目录仍为空。没有任何改变。

  5. 如果我反过来这样做:1)首先将USB磁盘安装到主机,2)运行容器,3)卸载USB磁盘。

    表示容器中的内容保持不变,但主机上的/mnt目录已被清除。

    在我挂载/卸载磁盘后,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
    

2 个答案:

答案 0 :(得分:1)

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

{{1}}

https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container---device

提供了更多文档

答案 1 :(得分:1)

对不起我迟到的帖子。在docker官方github页面上创建问题后。 @ cpuguy83给了我答案。 https://github.com/moby/moby/issues/32512

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

-v media/usb:/smb_share:slave

有关详情,请查看HERE