把设备分享给每个Docker Container

举报
docker君 发表于 2017/09/21 10:09:57 2017/09/21
【摘要】 本文分析如何把设备分享给每个Docker Container使用。

本文分析如何把设备分享给每个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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:hwclouds.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。