> 技术文档 > 带GPU启动 Docker 容器_docker容器使用gpu

带GPU启动 Docker 容器_docker容器使用gpu

在 Linux 服务器上启动 Docker 容器并使其能够使用 NVIDIA 显卡(GPU),需要使用 NVIDIA Container Toolkit(之前称为 nvidia-docker)。以下是详细步骤:


1. 确保宿主机满足条件

(1) 宿主机已安装 NVIDIA 驱动

nvidia-smi # 检查驱动是否正常

如果未安装,先安装 NVIDIA 驱动:

sudo apt updatesudo apt install -y nvidia-driver-535 # Ubuntu/Debian(版本根据显卡调整)sudo reboot

(2) 安装 NVIDIA Container Toolkit

# 添加 NVIDIA 仓库distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \\&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list# 更新并安装sudo apt updatesudo apt install -y nvidia-container-toolkitsudo systemctl restart docker

2. 启动 Docker 容器并挂载 GPU

(1) 使用 --gpus 参数

docker run --gpus all -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
  • --gpus all:允许容器访问所有 GPU。
  • nvidia/cuda:11.8.0-base-ubuntu22.04:NVIDIA 官方 CUDA 镜像(可替换为其他镜像)。
  • nvidia-smi:测试 GPU 是否可用。

(2) 指定特定 GPU

docker run --gpus \'\"device=0,1\"\' -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
  • \"device=0,1\":仅使用 GPU 0 和 1(按 nvidia-smi 显示的 ID)。

(3) 使用 Docker Compose

docker-compose.yml 中配置:

version: \"3.8\"services: my_gpu_service: image: nvidia/cuda:11.8.0-base-ubuntu22.04 deploy: resources: reservations: devices: - driver: nvidia  count: 1 # 使用 1 个 GPU  capabilities: [gpu] command: nvidia-smi

然后运行:

docker compose up

3. 验证 GPU 是否在容器内可用

进入容器并运行:

nvidia-smi

如果正常显示 GPU 信息,说明配置成功。


4. 常见问题

(1) nvidia-smi 报错:command not found

容器内未安装 NVIDIA 工具包,使用 NVIDIA 官方 CUDA 镜像(如 nvidia/cuda:11.8.0-base)或手动安装:

apt update && apt install -y nvidia-utils-535

(2) docker: Error response from daemon: could not select device driver

NVIDIA Container Toolkit 未正确安装,重新安装并重启 Docker:

sudo apt install --reinstall nvidia-container-toolkitsudo systemctl restart docker

(3) 权限问题

如果 Docker 默认用户无法访问 GPU,可以:

  • 使用 --privileged(不推荐):
    docker run --gpus all --privileged -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
  • 或手动添加设备权限:
    docker run --gpus all --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

5. 总结

操作 命令 安装 NVIDIA Container Toolkit sudo apt install nvidia-container-toolkit 启动带 GPU 的容器 docker run --gpus all -it nvidia/cuda:11.8.0-base nvidia-smi 指定 GPU 设备 docker run --gpus \'\"device=0,1\"\' -it ... Docker Compose 配置 capabilities: [gpu]

成功配置后,Docker 容器即可直接调用宿主机 GPU 进行计算(如 CUDA、PyTorch、TensorFlow)。