---
title: 'Запустить GPU-accelerated приложение в Docker-контейнере на облачном сервере'
sidebar_label: 'Запустить GPU-accelerated приложение в Docker-контейнере на сервере'
sidebar_position: 16
description: 'Как запустить GPU-accelerated приложения в Docker-контейнерах на облачном сервере с GPU'
---

import Formbricks from '@theme/MDXComponents/Formbricks'

# Запустить GPU-accelerated приложение в Docker-контейнере на облачном сервере

Docker-контейнеры можно использовать на облачных серверах с GPU для гибкого управления GPU-accelerated приложениями без дополнительной настройки окружения.

Контейнеризированная среда позволит:

* оптимально потреблять ресурсы — на одном сервере можно запускать множество приложений, которые другой среде требуют настройки разных окружений;
* избежать проблем с версионированием CUDA Toolkit для ваших приложений.

В Selectel доступны готовые образы с Docker для запуска GPU-accelerated приложений в контейнеризированных средах:

* Ubuntu 24.04 LTS 64-bit GPU Driver 535 Docker;
* Ubuntu 24.04 LTS 64-bit GPU Driver 580 Docker;
* Ubuntu 22.04 LTS 64-bit GPU Driver 535 Docker;
* Ubuntu 22.04 LTS 64-bit GPU Driver 580 Docker.

## Требования к облачному серверу \{#requirements}

У облачного сервера должны быть:

* [конфигурация сервера](/cloud-servers/create/configurations.mdx) с GPU;
* образ, из которого создан сервер, с предустановленными GPU-драйверами и Docker;
* сетевой или локальный диск сервера размером более 40 ГБ.

## Запустить GPU-accelerated приложение в Docker-контейнере на сервере \{#run-gpu-app-in-docker}

1. [Запустите сэмпл pytorch-cuda в Docker-контейнере](#run-pytorch-cuda-sample).

2. [Создайте собственный Docker-образ с CUDA](#build-custom-image).

### 1. Запустить сэмпл pytorch-cuda в Docker-контейнере \{#run-pytorch-cuda-sample}

Запустите PyTorch внутри Docker-контейнера с поддержкой GPU.

1. Откройте CLI.

2. Убедитесь, что GPU на сервере работает корректно:

   ```bash
   nvidia-smi
   ```

   В ответе появится список версий NVIDIA-SMI, драйверов и CUDA, совместимая с текущей версией драйвера, но не установленная в системе. Например:

   ```bash
   +-----------------------------------------------------------------------------------------+
   | NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
   |-----------------------------------------+------------------------+----------------------+
   | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
   |                                         |                        |               MIG M. |
   |=========================================+========================+======================|
   |   0  Tesla T4                       Off |   00000000:00:06.0 Off |                    0 |
   | N/A   41C    P8             10W /   70W |       0MiB /  15360MiB |      0%      Default |
   |                                         |                        |                  N/A |
   +-----------------------------------------+------------------------+----------------------+

   +-----------------------------------------------------------------------------------------+
   | Processes:                                                                              |
   |  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
   |        ID   ID                                                               Usage      |
   |=========================================================================================|
   |  No running processes found                                                             |
   +-----------------------------------------------------------------------------------------+
   ```

3. Запустите контейнер из каталога контейнеров [NVIDIA Container Registry](https://catalog.ngc.nvidia.com/containers):

   ```bash
   sudo docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:<pytorch_version>-py3 bash
   ```

   Укажите `<pytorch_version>` — версию PyTorch.

4. Убедитесь, что в контейнере установлен CUDA Toolkit и GPU доступна для вычислений:

   ```python
   import torch

   print("CUDA Available: ", torch.cuda.is_available())
   print("Number of GPUs: ", torch.cuda.device_count())
   ```

   Пример вывода:

   ```bash
   CUDA Available:  True
   Number of GPUs:  1
   ```

5. Убедитесь, что в контейнере установлена версия CUDA Runtime 12.1, которая нужна для запуска PyTorch текущей версии:

   ```bash
   conda list | grep cud
   ```

   Пример вывода:

   ```bash
   libcudnn9-cuda-12         9.1.1.17                      0    nvidia
   cuda-cudart               12.1.105                      0    nvidia
   cuda-cupti                12.1.105                      0    nvidia
   cuda-libraries            12.1.0                        0    nvidia
   cuda-nvrtc                12.1.105                      0    nvidia
   cuda-nvtx                 12.1.105                      0    nvidia
   cuda-opencl               12.3.101                      0    nvidia
   cuda-runtime              12.1.0                        0    nvidia
   ```

   На ОС сервера установка CUDA Runtime не требуется.

### 2. Создать собственный Docker-образ с CUDA \{#build-custom-image}

1. Запустите готовый контейнер:

   ```bash
   docker run --gpus all -it --rm  nvcr.io/nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04
   ```

   В контейнере будут предустановлены CUDA Toolkit, CUDA Runtime и libcudnn совместимых версий:

   ```bash
   cuda-cudart-12-8                12.8.90-1                   amd64        CUDA Runtime native Libraries
   cuda-nvcc-12-8                  12.8.93-1                   amd64        CUDA nvcc
   cuda-toolkit-config-common      12.8.90-1                   all          Common config package for CUDA Toolkit.
   libcudnn9-cuda-12               9.8.0.87-1                  amd64        cuDNN runtime libraries for CUDA 12.8
   ```

2. Установите Python 3:

   ```bash
   apt update && apt -y install python3 python3-pip
   python3 -m pip config set global.break-system-packages true
   python3 -m pip install tensorflow
   ```

3. Убедитесь, что в Docker-контейнере доступен GPU:

   ```bash
   python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000]))); gpu_available = tf.test.is_gpu_available(); print('GPU is availlable: ', gpu_available)"
   ```

   Пример вывода:

   ```bash
   I0000 00:00:1743408862.613883     910 gpu_device.cc:2019] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 4287 MB memory:  -> device: 0, name: NVIDIA RTX A2000, pci bus id: 0000:00:06.0, compute capability: 8.6
   tf.Tensor(-1418.5072, shape=(), dtype=float32)
   Available GPUs:  [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
   ```

4. Выйдите из оболочки, не прерывая контейнер: нажмите `Ctrl + P`, а затем `Ctrl + Q`.

5. Проверьте, что контейнер запущен:

   ```bash
   docker ps a
   ```

   Пример вывода:

   ```bash
   CONTAINER ID   IMAGE                                                COMMAND                  CREATED          STATUS                      PORTS     NAMES
   20d557a37bdd   nvcr.io/nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04   "/opt/nvidia/nvidia_…"   24 minutes ago   Up 24 minutes                         nifty_shtern
   ```

   В столбце параметра `CONTAINER ID` скопируйте ID контейнера, который вы запустили на шаге 1.

6. Создайте образ:

   ```bash
   docker commit <container_id> <image_tag>
   ```

   Укажите:

   * `<container_id>` — ID контейнера, который вы скопировали на шаге 5;
   * `<image_tag>` — тег образа.

   Если образ создался, выведется хеш образа. Пример вывода:

   ```bash
   sha256:a7ff970295e5dd37ef441fcf0462752715c95cece2729ddcc774a8aaa0773bce
   ```

7. Создайте и запустите собственный контейнер из образа:

   ```bash
   docker run --rm -it <image_tag> bash
   ```

   Укажите `<image_tag>` — тег образа, который вы создали на шаге 6.

   Здесь `--rm` — флаг, который удалит контейнер после выхода из оболочки `bash` контейнера.

<Formbricks />
