docker 支持GPU 问题 安装 NVIDIA Docker

复制代码
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

2. 安装 NVIDIA Docker 工具

NVIDIA Docker 是一个允许 Docker 容器访问 NVIDIA GPU 的工具。你可以通过以下步骤安装它:

复制代码
(base) [root@inspur-nf5468m6-001 docker]# cat /etc/yum.repos.d/nvidia-docker.repo 
[libnvidia-container]
name=libnvidia-container
baseurl=https://nvidia.github.io/libnvidia-container/stable/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[libnvidia-container-experimental]
name=libnvidia-container-experimental
baseurl=https://nvidia.github.io/libnvidia-container/experimental/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=0
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[nvidia-container-runtime]
name=nvidia-container-runtime
baseurl=https://nvidia.github.io/nvidia-container-runtime/stable/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/nvidia-container-runtime/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[nvidia-container-runtime-experimental]
name=nvidia-container-runtime-experimental
baseurl=https://nvidia.github.io/nvidia-container-runtime/experimental/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=0
gpgkey=https://nvidia.github.io/nvidia-container-runtime/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[nvidia-docker]
name=nvidia-docker
baseurl=https://nvidia.github.io/nvidia-docker/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/nvidia-docker/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt



distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
sudo yum install -y nvidia-docker2
sudo systemctl restart docker

3. 配置 NVIDIA Docker

为了确保 Docker 容器可以正确访问 NVIDIA GPU,你需要添加 NVIDIA Docker 的运行时配置。编辑 /etc/docker/daemon.json 文件,添加或修改以下内容:

复制代码
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}


sudo systemctl restart docker

4. 验证安装

最后,验证 NVIDIA Docker 是否正确安装并配置:

复制代码
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

这个命令会运行一个包含 CUDA 的容器,并执行 nvidia-smi 命令,显示 NVIDIA 系统管理界面,确认 GPU 可见性。如果看到 GPU 信息,说明 NVIDIA Docker 安装成功。

5. (可选)使用 NVIDIA Container Toolkit

从 NVIDIA 官方推荐的最新实践中,建议使用 NVIDIA Container Toolkit 替代 NVIDIA Docker。你可以通过以下步骤安装:

复制代码
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo \
   && sudo yum install -y nvidia-container-toolkit \
   && sudo systemctl restart docker

然后再次验证:

复制代码
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

这将运行一个 CUDA 11.0 容器,并使用 nvidia-smi 命令来检查 GPU。如果一切正常,你应该看到 GPU 的相关信息。

Docker 已经原生支持 NVIDIA GPU,无需使用 NVIDIA Docker 1.0 或 NVIDIA Docker 2.0 这样的旧工具。从 Docker 17.05 版本开始,Docker 社区版和 Docker 企业版都原生支持 NVIDIA GPU。这意味着你可以直接使用标准的 Docker 命令来运行基于 NVIDIA GPU 的容器,而无需安装额外的 NVIDIA Docker 插件。

要使用 Docker 与 NVIDIA GPU 集成,你需要做以下几步:

  1. 安装 NVIDIA 驱动:确保你的系统已经安装了适合你的 NVIDIA GPU 的最新 NVIDIA 驱动。

  2. 安装 Docker:确保你的系统上安装了 Docker。对于 Docker 的安装,你可以参考 Docker 的官方文档进行安装。

  3. 安装 NVIDIA Container Toolkit:这是连接 Docker 和 NVIDIA GPU 的桥梁。你可以通过以下命令安装 NVIDIA Container Toolkit:

    distribution=(. /etc/os-release;echo IDVERSION_ID | sed -e 's/\.//g' -e 's/amzn/amzn1/g') curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    sudo systemctl restart docker

  4. 注意:从 Docker CE 版本 19.03 开始,NVIDIA Container Toolkit 已经内置在 Docker 中,因此你可能不需要单独安装它。只需确保你的 Docker 是最新版本即可。

  5. 运行 GPU 支持的 Docker 容器 :使用 --gpus 参数来指定容器可以访问的 GPU。例如:

    复制代码
    docker run --gpus all -it nvidia/cuda:11.0-base /bin/bash

    这个命令会启动一个可以访问所有 GPU 的容器。

验证 GPU 支持:在容器内部,你可以运行如 nvidia-smi 的命令来验证 GPU 是否被正确识别和使用。

确保你的 Docker 和 NVIDIA Container Toolkit 是最新版本,以获得最佳兼容性和性能。你可以通过运行 docker info 和 nvidia-smi 来检查 Docker 和 NVIDIA GPU 的状态。如果你使用的是较新版本的 Docker(如 20.10 或更高),可能不需要单独的 NVIDIA Container Toolkit,因为它已经被整合到 Docker 中了。在这种情况下,你只需要确保你的 Docker 使用的是支持 GPU 的版本即可。

相关推荐
知白守黑2671 天前
docker资源限制
运维·docker·容器
无妄无望1 天前
docker学习(4)容器的生命周期与资源控制
java·学习·docker
爱宇阳1 天前
禅道社区版 Docker Compose 服务迁移教程
运维·docker·容器
xzl041 天前
docker运行Ubuntu22.04
docker
qq_264220891 天前
K8s存储-PV与PVC
云原生·容器·kubernetes
vue学习1 天前
docker 学习dockerfile 构建 Nginx 镜像-部署 nginx 静态网
java·学习·docker
热爱生活的五柒1 天前
vscode如何链接远程服务器里面的docker里面的目录
服务器·vscode·docker
kyle-fang1 天前
tritonserver的docker镜像中运行onnxruntime-gpu,报错segmentationfault
容器
hello_zzw1 天前
docker部署MySQL主从服务集群
mysql·adb·docker
vue学习1 天前
docker 运行容器限制内存、限制磁盘 IO
运维·docker·容器