把设备分享给每个Docker Container

本文主要探讨如何将设备分享给每个Docker Container使用,给出了简单的分享方法,如使用docker run -ti -v命令。同时指出了一些细节问题,包括docker用户权限、设备独占性以及动态设备的处理等,并给出了相应的解决思路。

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

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

这意味着,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——但我也没有更好的办法:)

来源:华为云社区  作者:Kenneth Lee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值