¿Por qué el contenedor Docker puede ver todos los dispositivos GPU en el host?

Versión de host de O / S: CentOS 7.3

Versión Docker: 1.12.6

Versión CUDA 8.0.61

Hay 4 GPU en la máquina host. A continuación están los detalles:

"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" } ], 

Vea a continuación la list de dispositivos 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 

El contenedor no se está ejecutando en el modo privilegiado. Cuando el número de GPU es correcto en el contenedor, pero en algún momento más adelante podemos ver 4 GPU en el contenedor.

Los contenedores son una abstracción en la capa de aplicaciones que combina código y dependencies. Se pueden ejecutar varios contenedores en la misma máquina y compartir el núcleo del sistema operativo con otros contenedores, cada uno de los cuales se ejecuta como processs aislados en el espacio de usuario. Mientras que las máquinas virtuales (VM) son una abstracción de hardware físico convirtiendo un server en muchos serveres. Esta es la razón por la que puede ver todas las GPU enumeradas en el Host.

Use las "statistics de docker" para descubrir el uso de resources del contenedor ( https://docs.docker.com/engine/reference/commandline/stats/ )