This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

Конфигурация контейнера Docker

В этой статье описывается процесс настройки контейнера Docker. Docker позволяет разрабатывать или запускать приложение на основе UNIGINE в различных средах изолированно внутри контейнера. Для выполнения всех необходимых действий на вашем компьютере должна быть установлена графическая карта NVIDIA и система Linux с поддержкой Ubuntu.

Для работы с другими дистрибутивами, такими как Amazon, Open Suse, Debian, Centos или RHEL, пожалуйста, ознакомьтесь с документацией NVIDIA Container Toolkit.

Системные требования#

Вам необходимо выключить все программы, воспроизводящие звук. Для корректного воспроизведения звука в системе должен быть установлен драйвер ALSA.

Примечание

Демон Docker привязывается к сокету Unix, а не к TCP-порту. По умолчанию сокетом Unix владеет пользователь root, а другие пользователи могут получить к нему доступ только с помощью sudo (читать подробнее). Демон Docker всегда запускается от имени пользователя root.

Если вы не хотите писать sudo перед командой docker, создайте группу Unix с именем docker и добавьте в нее пользователей (читать подробнее). Когда запускается демон Docker, он создает сокет Unix, доступный членам группы docker.

Настройка Docker#

Чтобы настроить Docker, выполните следующие действия:

  1. Установите NVIDIA Container Toolkit
  2. Получите образ контейнера Docker или соберите его самостоятельно.
  3. Запустите контейнер Docker в тестовом режиме.

Установка NVIDIA Container Toolkit#

  1. Настройте NVIDIA Container Toolkit в соответствии с руководством по настройке. Установите репозиторий пакетов и ключ GPG, введите для этого в командной строке:

    Результат
    $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
    && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
    && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
  2. Установите nvidia-docker2:

    Результат
    $ sudo apt-get update
    $ sudo apt-get install -y nvidia-docker2

  3. Перезапустите Docker:

    Результат
    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker

Подготовка образа контейнера#

На Docker Hub есть готовый к использованию образ контейнера, который мы подготовили для вас — перейдите по ссылке run-unigine-in-docker и используйте следующую команду:

Результат
docker pull unigine/run-unigine-in-docker

В случае, если по какой-либо причине вместо использования образа контейнера из Docker Hub вы захотите подготовить и собрать свой образ контейнера вручную, пожалуйста, следуйте инструкциям в спойлере ниже:

  1. Создайте папку для работы с контейнером:

    Результат
    $ mkdir ~/unigine-in-docker
  2. Создайте текстовый файл Dockerfile в папке unigine-in-docker/:

    Результат
    $ cd ~/unigine-in-docker
    $ touch Dockerfile
  3. Добавьте следующие строки в файл Dockerfile и сохраните его:

    Результат
    FROM nvidia/opengl:base-ubuntu20.04
    VOLUME /tmp/.X11-unix
    RUN apt update && apt upgrade -y
    
    # linux-headers- hardcoded, if it don't build - try update version of linux-headers
    RUN DEBIAN_FRONTEND=noninteractive apt-get update && DEBIAN_FRONTEND=noninteractive apt install -y \
    	python3 \
    	wget gnupg \
    	xvfb \
    	x11-xserver-utils \
    	python3-pip \
    	libegl1-mesa \
    	libgl1-mesa-dev \
    	libxv1 \
    	gcc g++ make ccache \
    	libxrandr-dev \
    	libxinerama-dev \
    	libopenal1 \
    	libxrender-dev \
    	libxext-dev \
    	libc6-dev \
    	libx11-dev \
    	libxi-dev \
    	libxml2-dev \
    	cmake \
    	nano vim \
    	lshw \
    	libglu1-mesa \
    	mesa-utils \
    	glmark2 \
    	xxd \
    	# for sdk bro2 \
    	libxcb-shape0 \
    	libxcb-xkb1 \
    	libxcb-icccm4 \
    	libxcb-image0 \
    	libxcb-keysyms1 \
    	libxcb-render-util0 \
    	libxkbcommon-x11-0 \
    	linux-headers-5.4.0-135-generic \
    	lxterminal \
    	# sound \
    	alsa-base \
    	alsa-utils \
    	libsndfile1-dev
    
    COPY ./asound.conf /etc/
    
    RUN python3 -m pip install pyinotify
    
    ENV XDG_RUNTIME_DIR=/tmp/.X11-unix
    
    # install dotnet and runtime
    # if it don't build - try to find more recent versions of dotnet at https://dotnet.microsoft.com/en-us/download/dotnet/6.0
    
    RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/01292c7c-a1ec-4957-90fc-3f6a2a1e5edc/025e84c4d9bd4aeb003d4f07b42e9159/dotnet-sdk-6.0.418-linux-x64.tar.gz
    RUN wget -O dotnet-runtime.tar.gz https://download.visualstudio.microsoft.com/download/pr/b63daa46-51f4-480e-ad03-ef2c5a6a2885/ae059763456991305109bf98b3a67640/aspnetcore-runtime-6.0.26-linux-x64.tar.gz
    RUN mkdir /usr/local/etc/dotnet-sdk-6.0
    RUN tar -xzf dotnet.tar.gz -C /usr/local/etc/dotnet-sdk-6.0
    RUN tar -xzf dotnet-runtime.tar.gz -C /usr/local/etc/dotnet-sdk-6.0
    RUN rm -rf /usr/bin/dotnet
    RUN ln -s /usr/local/etc/dotnet-sdk-6.0/dotnet /usr/bin/dotnet
    
    # path to libraries
    ENV LD_LIBRARY_PATH="/opt/project/bin"
  4. Создайте новый файл asound.conf:

    Результат
    $ sudo vi asound.conf
  5. Запишите следующий скрипт в файл asound.conf:

    Результат
    pcm.!default {
            type plug
            slave {
                    pcm "hw:0,0"
            }
    }
    
    ctl.!default {
            type hw
            card 0
    }
    
    pcm.mixed-analog {
        type plug
            slave.pcm "dmix-analog"
            hint {
                show on
                    description "Mixed Analog Output - Use analog outputs, converting samples, format, and rate as necessary. Allows mixing with system sounds."
            }
    }
    
    # Control device (mixer, etc.) for the card
    ctl.mixed-analog {
        type hw
            card 0
    }
  6. Соберите образ Docker (внутри папки unigine-in-docker):

    Результат
    $ docker build --rm --tag run_unigine_in_docker:latest -f Dockerfile .

Тестовый запуск Docker#

  1. Запустите контейнер в пробном режиме, чтобы просмотреть характеристики графического процессора:

    Результат
    $ cd ~/unigine-in-docker/
    $ docker run -it --rm --network host \
    --runtime=nvidia --gpus 0 -e NVIDIA_VISIBLE_DEVICES=0 \
    -e DISPLAY=${DISPLAY} \
    -e NVIDIA_DRIVER_CAPABILITIES=display,compute \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
     run_unigine_in_docker:latest \
     /bin/bash
    # nvidia-smi

  2. Проверьте выбранные драйверы графического процессора с помощью следующей команды: glxinfo | grep "OpenGL". Вы увидите полную информацию о графическом процессоре. Или используйте команду glxinfo | grep "OpenGL renderer" для отображения названия модели используемого графического процессора. Пример вывода:

Использование контейнера Docker#

После создания и запуска контейнера Docker с графическим ускорением, вы можете выполнить следующие действия:

  1. Начать разработку своего проекта с помощью UnigineEditor или запустить приложение (экземпляр движка) через SDK Browser (версия 2.0.13+).
  2. Запустить UNIGINE-приложение.
Последнее обновление: 25.04.2024
Build: ()