2017-04-16 36 views
1

我想根據安裝的可移動USB磁盤動態地改變容器中的目錄內容umounting可移動驅動器後保持不變。爲了實現這一點,我做了以下步驟。內容在容器的綁定安裝目錄安裝/從主機

  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. 安裝U盤到主機。執行mount /dev/sdxY /mnt命令。主機上的/mnt目錄現在包含存儲在可移動USB磁盤上的文件和目錄。

  4. 再次檢查內容的容器。容器中的/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 

回答

1

對不起

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

更多文檔,我已故的職位。在docker的官方github頁面上創建問題後。 @ cpuguy83給了我答案。 https://github.com/moby/moby/issues/32512

要使安裝操作傳播到容器,請將slave標誌附加到-v選項。 e.g:

-v media/usb:/smb_share:slave 

欲瞭解更多信息,請HERE

1

您可以使用--device選項容器內直接訪問USB設備。可在https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container---device

+0

我試着用'--device'選項但失敗。在將USB電纜插入主機之前,'/ dev'中沒有適當的設備文件,例如'/ dev/sdb'。如果我首先連接USB電纜,然後使用'--device =/dev/sdb1'運行容器,則在從主機斷開USB電纜後,設備仍然存在事件。 –

+0

這篇文章將幫助你http://stackoverflow.com/questions/24225647/docker-any-way-to-give-access-to-host-usb-or-serial-device –

+0

我用'搬運工運行測試 - 它--rm --privileged -v/dev/bus/usb:/ dev/bus/usb ubuntu bash',如果我在容器運行之前將其插入,則無法識別USB閃存驅動程序。 –

相關問題