繁体   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