为什么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/ )