为什么docker容器可以看到主机上的所有GPU设备?

时间:2017-10-31 08:56:50

标签: docker cuda kubernetes containers nvidia

主机操作系统版本: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

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

1 个答案:

答案 0 :(得分:2)

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

使用"码头工具统计数据"找出Container的资源使用情况(https://docs.docker.com/engine/reference/commandline/stats/