为什么docker集装箱可以看到主机上的所有GPU设备?

主机操作系统版本:CentOS 7.3

Docker版本:1.12.6

CUDA版本8.0.61

主机上有4个GPU。 以下是详细信息:

"Devices": [ { "PathOnHost": "/dev/nvidiactl", "PathInContainer": "/dev/nvidiactl", "CgroupPermissions": "mrw" }, { "PathOnHost": "/dev/nvidia-uvm", "PathInContainer": "/dev/nvidia-uvm", "CgroupPermissions": "mrw" }, { "PathOnHost": "/dev/nvidia2", "PathInContainer": "/dev/nvidia0", "CgroupPermissions": "mrw" }, { "PathOnHost": "/dev/fuse", "PathInContainer": "/dev/fuse", "CgroupPermissions": "mrw" } ], 

看下面的Nvidia设备列表:

 root@de-18--dev-105631-3244950001-48pjz:/sys/fs/cgroup/devices# ls /dev | grep nv nvidia-uvm nvidia-uvm-tools nvidia0 nvidia1 nvidia2 nvidia3 nvidiactl root@de-18--dev-105631-3244950001-48pjz:/sys/fs/cgroup/devices# cat devices.list a *:* rwm 

容器未在特权模式下运行。 当容器中GPU的数量是正确的,但是稍后在那里,我们可以在容器中看到4个GPU。

容器是应用程序层的一个抽象,将代码和依赖关系打包在一起。 多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为孤立进程运行。 虽然虚拟机(VM)是将一台服务器变成许多服务器的物理硬件的抽象概念。 这就是您能够看到主机上列出的所有GPU的原因。

使用“docker stats”查找Container的资源使用情况( https://docs.docker.com/engine/reference/commandline/stats/