问题描述
在制作一个Docker,把/dev/mem mount到容器里面,并且把容器启动:
sudo docker run -ti -p 12345:8080 --mount type=bind,source=/dev/mem,destination=/dev/mem myImage:v1 /bin/bash
发现在容器里面执行dmidecode命令会出现:
Operation not permitted
这个错误。
解决方法
启动的时候需要添加privileged 这个参数
sudo docker run -ti -p 12345:8080 --mount type=bind,source=/dev/mem,destination=/dev/mem --privileged myImage:v1 /bin/bash
官方解释
从上面的官方描述来看,加上了这个参数能让容器获得跟宿主机上面root近似的权限,可以读取一些设备的信息。所以加上了这个参数,才能读取到/dev/mem的信息。