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

标签 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

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

最佳答案

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

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

关于docker - 为什么Docker容器可以看到主机上的所有GPU设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031366/

相关文章:

cuda - GPU 中的网格、 block 和线程数

kubernetes - kubernetes 有没有办法等待 daemonset 准备好

docker - 从 Windows 主机访问 dockerized redis

docker - 在Kubernetes集群中使用Docker镜像启动服务的最佳实践

docker - 如何在dockerfile中添加JBOSS_HOME并运行jboss容器

Cuda:解决资源不足问题

docker - Traefik 不会添加前缀

c++ - 链接器没有链接我自己的静态库

php - 如何将 PhpMyAdmin 与 Mysql 连接,这两者都托管在 Gcloud 的 Kubernetes 集群中

ssl - Kubernetes Haproxy Ingress + Nginx 作为后端 Https