Setting Up Nvidia Docker with GPU Support on CentOS 7

Environment Configuration

This guide covers the complete setup for running GPU-accelerated Docker containers on CentOS 7 using Nvidia drivers and CUDA.

System Specifications:

  • Operating System: CentOS 7.4 (1708)
  • GPU: Nvidia GeForce GTX 1080 Ti

Required Components

  1. Docker CE repository
  2. Nvidia Docker repository
  3. CUDA package repository
  4. cuDNN library (requires Nvidia developer account)
  5. Nvidia driver matching GPU model
  6. CUDA Docker image from Docker Hub

File Structure

/root/nvidia/
├── centos-gpu/
│   └── Dockerfile
├── cuda-repo-rhel7-9.1.85-1.x86_64.rpm
├── cudnn-9.0-linux-x64-v7.tgz
├── docker-ce.repo
├── nvidia-docker.repo
└── NVIDIA-Linux-x86_64-390.25.run

Preparation Steps

Copy repository files to the system:

cp docker-ce.repo nvidia-docker.repo /etc/yum.repos.d/
rpm -ivh cuda-repo-rhel7-9.1.85-1.x86_64.rpm
yum install epel-release
gcc gcc-c++
yum install kernel*

Driver Installation

Disable the open-source Nouveau driver and install the Nvidia driver:

echo "blacklist nouveau" >>/etc/modprobe.d/blacklist.conf
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
init 3
chmod +x NVIDIA-Linux-x86_64-390.25.run
./NVIDIA-Linux-x86_64-390.25.run

Switch to runlevel 3 (multi-user text mode) before driver installation.

Docker Installasion

yum install docker-ce nvidia-docker
systemctl enable docker
systemctl start docker
systemctl enable nvidia-docker
systemctl start nvidia-docker

The Nvidia driver must be installed before starting nvidia-docker.

Custom Docker Image

Create a Dockerfile in the centos-gpu directory:

FROM centos:7
LABEL maintainer "NVIDIA CORPORATION <cudatools@nvidia.com>"

RUN NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \
    curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \
    echo "$NVIDIA_GPGKEY_SUM  /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict -

ENV CUDA_VERSION 9.0.176
ENV CUDA_PKG_VERSION 9-0-$CUDA_VERSION-1

LABEL com.nvidia.volumes.needed="nvidia_driver"
LABEL com.nvidia.cuda.version="${CUDA_VERSION}"

RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
    echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf

ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64

ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV NVIDIA_REQUIRE_CUDA "cuda>=9.0"

Build the image:

yum install cuda-cudart-9-0-9.0.176-1
ln -s cuda-9.0 /usr/local/cuda
nvidia-docker build -t centos-nvidia /root/nvidia/centos-gpu

Verify the image:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-nvidia       latest              a02c8e0ad5ca        2 hours ago         207MB

Running GPU Containers

Launch a container with GPU access:

nvidia-docker run --name="centos-gpu-container" -ti centos-nvidia /bin/bash

Verify GPU visibility inside the container:

nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.25                 Driver Version: 390.25                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:02:00.0 Off |                  N/A |
| 23%   17C    P8     8W / 250W |     10MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Container Management

List all containers:

nvidia-docker ps -a

Start an existing container:

nvidia-docker start <container_id>

Copy files into container:

nvidia-docker cp /path/to/file <container_id>:/destination/

Execute commands in running container:

nvidia-docker exec -ti <container_id> /bin/bash

cuDNN Setup

Inside the container, install cuDNN:

# Copy cuDNN archive into container
nvidia-docker cp cudnn-9.0-linux-x64-v7.tgz <container_id>:/root/

# Inside container
cd /root
tar -xzvf cudnn-9.0-linux-x64-v7.tgz

# Add library paths
cp cuda/lib64/* /usr/local/nvidia/lib64/
cp cuda/include/* /usr/local/nvidia/include/
ldconfig

Pre-built Images

Alternative pre-built CUDA images are available:

docker pull nvidia/cuda

Available tags include various CUDA versions and base OS options (ubuntu, centos, debian).

For TensorFlow with GPU support:

docker pull tensorflow/tensorflow:latest-gpu

Tags: CentOS 7 Nvidia Docker gpu cuda docker

Posted on Sat, 29 Aug 2026 16:27:28 +0000 by jhuaraya