簡體   English   中英

docker run --device 和 docker run --volume 有什么區別?

[英]What's the difference between docker run --device and docker run --volume?

如果一切都“只是”linux 中的一個文件,那么/dev中的文件/節點與其他文件有何不同,以至於 docker 必須以不同方式處理它們? docker 對設備文件有何不同? 我希望它是更詳細的綁定命令的簡寫?

事實上,在對諸如--volume /dev/spidev0.0:/dev/spidev0.0之類的設備文件進行常規綁定掛載之后,用戶在嘗試訪問設備。 通過--device /dev/spidev0.0:/dev/spidev0.0綁定時,它按預期工作。

Docker 運行參考頁面具有指向 Linux kernel 文檔的鏈接,該文檔位於cgroup 設備白名單 Z594C103F2C6FDAB59C.C. 在幾個方面,在容器中以 root 身份運行的進程比在主機上以 root 身份運行的進程更受限制:沒有特殊的附加權限(功能),您無法重新啟動主機、掛載文件系統、創建虛擬NIC 或任何其他各種系統管理任務。 設備系統與能力系統是分開的,但它們的精神是相同的。

考慮這一點的另一種方式是作為安全功能。 容器通常不應該能夠訪問主機的文件系統或其他進程,即使它以 root 身份運行。 But if the container process can mknod kmem c 1 2 and access kernel memory, or mknod sda b 8 0 guessing that the host's hard drive looks like a SCSI disk, it could in theory escape these limitations by directly accessing low-level resources. cgroup 設備限制可以防止這種情況。

由於 Docker 旨在用作隔離系統,其中容器是無法訪問主機資源的受限環境,因此運行需要物理設備或主機文件的任務充其量是不方便的。 如果 Docker 的隔離特性沒有意義,那么進程直接在主機上運行可能會更好,而不涉及 Docker。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM