设备分享每个Docker Container

网友投稿 759 2022-05-29

本文分析如何把设备分享给每个Docker Container使用。

假设我有一个设备,通过/dev/my_device进行访问,现在我启动一个Docker container,需要访问这个设备,最简单的方法是:docker run -ti -v /dev/my_device:/dev/my_device myimage:latest /bin/bash

把设备分享给每个Docker Container

这意味着,docker中访问设备和在Host机上几乎没有区别。这个很容易通过/dev/pts/n进行验证:开一个控制台(通过screen,tmux,或者ssh都可以),用ps看看控制台的名称,然后在Docker中暴露这个控制台,往里写相关的数据,你就可以从所开的控制台中拿到数据了。

但也有不少细节问题需要考量的:

第一,docker的用户不一定有权限访问那个设备,docker中的root不一定具有Host的root权限。这个是运行docker的管理员自己需要解决的问题。

第二,每个Linux系统,无论是Host还是Guest,都认为自己独占设备的,所以管理员要不保证这个设备可以被多个用户使用,要不要保证这个设备只会分配给独立的使用者。或者也有人通过sr-iov,把设备分解为多个VF,供不同docker来使用:http://jason.digitalinertia.net/exposing-docker-containers-with-sr-iov/

第三,对于动态设备,需要有特殊的考量。比如我在docker中通过vfio创建了一个vfio_group对象,这个对象是新加出来的,如果用上面的预定义方法,在我的docker中就看不见。一种从权的做法是直接用-v /dev:/dev把整个/dev目录共享到Docker中(或者限制性更强一点,仅仅共享vfio目录),但可能不是每个人都能接受这样来使用docker——但我也没有更好的办法:)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《5G NR物理层技术详解:原理、模型和组件 》 —2.4 物理信道
下一篇:makefile生成可执行文件、静态库、动态库模板
相关文章