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 的版本即可。

相关推荐
敲上瘾12 小时前
【探索实战】:Kurator分布式统一应用分发平台的全面解析与实践指南
分布式·容器·kubernetes·serverless
cui_win12 小时前
Docker Compose 部署一个完整的Prometheus监控告警系统
docker·容器·prometheus
ALex_zry16 小时前
Docker Compose运维技术实战分享:从安装到架构解析
运维·docker·架构
2501_9411497918 小时前
Go语言高性能分布式缓存与Redis实战分享:微服务缓存优化与访问性能提升经验
eureka
roman_日积跬步-终至千里21 小时前
【Docker】Docker Stop 后到底发生了什么?——从信号机制到优雅停机
运维·docker·容器
z***6261 天前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
Connie14511 天前
记一次K8s故障告警排查(Grafna告警排查)
云原生·容器·kubernetes·grafana
❀͜͡傀儡师1 天前
Docker部署视频下载器
docker·容器·音视频
2501_941820491 天前
Python在高并发日志处理与实时分析系统中的架构设计与性能优化实践
eureka
热爱学习的小怪兽1 天前
docker的一些常用指令
运维·docker·容器