【问题标题】:Old docker containers are not usable (no GPU) after updating the GPU driver in the host machine更新主机中的 GPU 驱动程序后,旧的 docker 容器不可用(无 GPU)
【发布时间】:2020-07-24 18:17:24
【问题描述】:

今天,我们更新了主机的 GPU 驱动程序,我们创建的新容器都运行良好。但是,我们所有现有的 docker 容器在内部运行 nvidia-smi 命令时都会出现以下错误:

初始化 NVML 失败:驱动程序/库版本不匹配

如何抢救这些旧货柜?我们之前在主机中的 GPU 驱动版本是384.125,现在是430.64

主机配置

nvidia-smi给了

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.64       Driver Version: 430.64       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-DGXS...  Off  | 00000000:07:00.0  On |                    0 |
| N/A   40C    P0    39W / 300W |    182MiB / 32505MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100-DGXS...  Off  | 00000000:08:00.0 Off |                    0 |
| N/A   40C    P0    39W / 300W |     12MiB / 32508MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla V100-DGXS...  Off  | 00000000:0E:00.0 Off |                    0 |
| N/A   39C    P0    40W / 300W |     12MiB / 32508MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla V100-DGXS...  Off  | 00000000:0F:00.0 Off |                    0 |
| N/A   40C    P0    38W / 300W |     12MiB / 32508MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1583      G   /usr/lib/xorg/Xorg                           169MiB |
+-----------------------------------------------------------------------------+

nvcc --version 给了

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

dpkg -l | grep -i docker给了

ii  dgx-docker-cleanup                         1.0-1                                           amd64        DGX Docker cleanup script
rc  dgx-docker-options                         1.0-7                                           amd64        DGX docker daemon options
ii  dgx-docker-repo                            1.0-1                                           amd64        docker repository configuration file
ii  docker-ce                                  5:18.09.2~3-0~ubuntu-xenial                     amd64        Docker: the open-source application container engine
ii  docker-ce-cli                              5:18.09.2~3-0~ubuntu-xenial                     amd64        Docker CLI: the open-source application container engine
ii  nvidia-container-runtime                   2.0.0+docker18.09.2-1                           amd64        NVIDIA container runtime
ii  nvidia-docker                              1.0.1-1                                         amd64        NVIDIA Docker container tools
rc  nvidia-docker2                             2.0.3+docker18.09.2-1                           all          nvidia-docker CLI wrapper

docker version 给了

Client:
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        6247962
 Built:             Sun Feb 10 04:13:50 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 03:42:13 2019
  OS/Arch:          linux/amd64
  Experimental:     false

【问题讨论】:

  • 你是如何启动容器的? (什么命令)
  • 创建容器时,我使用了nvidia-docker run -it --name <container name> <image name>。但是我用我们创建的新容器进行了测试,无论nvidia-docker run -it 还是docker run -it --runtime=nvidia,它都可以工作。再次进入容器时,我们使用docker exec -it <docker name>
  • 我发现的一种解决方法是使用docker commit 从您的容器中创建一个映像,然后使用该映像创建一个新容器。然后nvidia-smi 在新容器中再次工作。我想知道是否有一种方法可以在不执行docker commit 的情况下恢复现有容器
  • 解决了吗?我有类似的问题 450.** -> 460.**
  • 还没有解决。我目前的解决方法是将容器导出为图像。然后我使用这些图像创建新容器,并且新容器以某种方式工作。但是存储所有这些图像非常耗时,并且还占用大量磁盘空间。

标签: docker nvidia-docker


【解决方案1】:

我也遇到了这个问题。在我的情况下,我有这行:

apt install -y nvidia-cuda-toolkit

在我的 Dockerfile 中。删除此行解决了该问题。一般来说,我建议使用与本地计算机上的驱动程序兼容的nvidia provided container

【讨论】:

    猜你喜欢
    • 2019-03-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2021-10-09
    • 2016-01-12
    • 2013-05-11
    • 1970-01-01
    相关资源
    最近更新 更多