docker中使用gpu

注意:

本机想要启用gpu加速计算,需要由一张多余的nVidia显卡。需要提前禁用nouveau:lsmod | grep nouveau没有输出即禁用了

需要安装1、显卡驱动、2、cuda库(安装cuda会自动安装显卡驱动)3、cudnn(深度神经网络的GPU加速库,需要神经网络则安否则可以不安)

安装完成后,可以在本机运行nvidia-smi查看GPU设备的状态。

Docker使用gpu

nvidia-docker2.0对nvidia-docker1.0进行了很大的优化,不用再映射宿主机GPU驱动了,直接把宿主机的GPU运行时映射到容器即可,容器内无需安装gpu驱动和cuda了。

一、nvidia-docker方式

为了使docker image能很便利的使用Nvidia GPU,从而产生了nvidia-docker,由它来制作nvidia driver的image。nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker

需要安装:1、docker 2、显卡驱动(nvidia driver) 和cuda(安装cuda时会自动安装显卡驱动) 。 3、nvidia-docker(nvidia-docker2是对nvidia-docker的升级)

nvidia-docker run --rm nvidia/cuda:10.0-devel

docker开的容器中要想支持gpu,也必须安装cuda(安cuda时会自动安驱动)

1、可以直接使用tensorflow、pytorch等官方提供的gpu镜像。

2、如果想自己定制,可以基于nvidia/cuda镜像,进行配置(不要从头自己配置)

二、Docker19.03之后,内置gpu支持

增加了对--gpus选项的支持,我们在docker里面想读取nvidia显卡再也不需要额外的安装nvidia-docker2了。需要提前禁用nouveau:lsmod | grep nouveau没有输出即禁用了

需要安装:1.安装nvidia驱动、cuda 2、安装nvidia-container-runtime  3、安装docker-19.03

1、安装驱动和cuda:

下载对应版本的cuda:CUDA Toolkit 12.1 Update 1 Downloads | NVIDIA Developer
比如我下载的为Centos7版本的RPM包,下载后直接安装。安装cuda的时候会自动安装nvidia驱动,控制台信息:

Installing the NVIDIA display driver...

Installing the CUDA Toolkit in /usr/local/cuda-9.1 ...

ps:也可以先手动安装驱动,然后再通过.run文件安装cuda(可以选择不安装nvidia驱动)

安装cuda时报错:错误:软件包xxx需要:opencl-filesystem、ocl-icd

解决:安装epel数据源即可yum install epel-release –y。

2、安装nvidia-container-runtime:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

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-container-toolkit nvidia-container-runtime

3、运行容器时,添加--gpu参数启用gpu支持。

# 使用所有GPU

$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

# 使用两个GPU

$ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi

# 指定GPU运行

$ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi

$ docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:9.0-base nvidia-smi

docker exec -it centos  #进入容器

nvidia-smi #容器内查看gpu使用情况

测试:docker pull ufoym/deepo:keras-py36-cu80  #拉取支持gpu的keras & tensorflow环境

docker run --gpus all --rm -it ufoym/deepo:keras-py36-cu80  #启动后,进入容器。

进入python环境 (docker run --gpus all --rm -it ufoym/deepo)

python

输入代码

import tensorflow as tf

a = tf.constant('hello world')

sess = tf.Session() 

sess.run(a)

sess.close()

报错:docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].

解决:确保安装了nvidia-container-runtime,然后sudo systemctl restart docker即可。

### 配置和使用Docker容器中的GPU支持 #### 安装 NVIDIA Container Toolkit 为了使 Docker 能够识别并利用 GPU,需先安装 NVIDIA Container Toolkit。此工具包简化了在容器环境中配置 GPU 支持的过程,并取代了早期版本的 `nvidia-docker` 和 `nvidia-container-runtime`[^3]。 ```bash 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.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 ``` 上述脚本适用于基于 Debian/Ubuntu 的 Linux 发行版;对于其他操作系统,请参照官方文档获取相应指令。 #### 创建带有 GPU 支持的 Dockerfile 创建一个简单的 Dockerfile 文件来定义包含 CUDA 运行时环境的基础镜像: ```dockerfile FROM nvidia/cuda:11.0-base WORKDIR /app COPY . . CMD ["bash"] ``` 这里选择了 CUDA 11.0 版本作为基础镜像,可根据实际需求调整至合适的 CUDA 版本。 #### 构建与运行带 GPU 访问权限的容器 构建自定义镜像并将它标记为 my-gpu-app: ```bash docker build -t my-gpu-app . ``` 通过指定 `--rm --gpus all -it my-gpu-app bash ``` 此时,在容器内部可以直接调用 GPU 加速的应用程序而无需额外安装驱动或库文件[^1]。 #### 测试 GPU 功能正常工作 进入容器后可以通过执行如下命令验证 GPU 是否已被正确挂载以及 CUDA 环境是否设置无误: ```bash nvidia-smi ``` 如果一切顺利,则会显示有关已加载 GPU 及其状态的信息列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李庆政370

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值