Перейти к содержимому

Создание и запуск Docker-контейнера с TrueConf VideoSDK

Автор04.04.2024Дата написанияОколо 6 минВремя чтенияAPI / SDKКатегорияTrueConf SDKAPI / SDKТеги

Docker и его отличия от виртуальной машины

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет “упаковать” приложение со всем его окружением и зависимостями в контейнер, который может быть в дальнейшем развёрнут. Предоставляет набор команд для управления этими контейнерами.

Технологии Docker и виртуальных машин имеют общее предназначение, но работают с ОС по разному принципу. Главное отличие — виртуальная машина представляет собой дополнительный слой абстракции поверх реального оборудования с драйверами, а Docker-контейнер использует напрямую аппаратное обеспечение хостовой машины.

Что такое TrueConf VideoSDK

TrueConf VideoSDK — программное решение для создания корпоративных приложений с интегрированной видеоконференцсвязью TrueConf, является основой для TrueConf Room, то есть TrueConf Room представляет собой TrueConf VideoSDK с полнофункциональным веб-интерфейсом для управления видеоконференцсвязью. Подробнее о TrueConf VideoSDK и его отличиях от TrueConf Room можно узнать здесь. Также TrueConf предоставляет NuGet пакет для облегчения .NET разработки, ознакомиться с ним можно здесь.

Этот комплект инструментов помогает разработчикам создавать высококачественные приложения, облегчая процесс разработки. С помощью TrueConf VideoSDK можно интегрировать технологию видеоконференцсвязи в терминалы самообслуживания, информационные киоски или корпоративные программные решения.

Ограничения TrueConf VideoSDK в контейнере

В основном возможности VideoSDK на локальной машине и в контейнере идентичны, за исключением отсутствия у последнего Front-End’а, то есть отсутствия вывода главного экрана и раскладки конференции на монитор. Это связано с ограничениями самих контейнеров.

Как развернуть контейнер с VideoSDK на своём ПК

В данном примере будет рассмотрена установка и настройка Docker, развёртывание контейнера на операционной системе Debian 12, содержимое контейнера — TrueConf VideoSDK версии 4.3. Для установки Docker в ОС:

  • Обновите список пакетов, для этого выполните в терминале ОС команду
sudo apt update
  • Установите необходимые для работы с удалёнными репозиториями дополнительные пакеты с помощью команды
sudo apt -y install ca-certificates curl gnupg lsb-release
  • Скачайте и добавьте PGP ключ от репозитория Docker. Для этого выполните команду
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • Добавьте репозиторий Docker, для этого выполните команду
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Обновите списки доступных пакетов
sudo apt update
  • Установите Docker и дополнительные пакеты с помощью команды
sudo apt -y install docker-ce docker-ce-cli containerd.io

Запуск и автозагрузка Docker

После завершения установки Docker выключен по умолчанию, для запуска выполните команду:

sudo systemctl start docker

Для добавления Docker в автозагрузку выполните команду

sudo systemctl enable docker

Добавление пользователя в группу Docker

По умолчанию использовать Docker может только пользователь root: если выполнить команду Docker от обычного пользователя, в терминале отобразится ошибка. Для запуска команд Docker от обычного пользователя и без использования команды sudo необходимо добавить текущего пользователя ОС в группу docker. Группа docker создается автоматически при установке, проверить её наличие можно с помощью команды:

groups $USER

Если по какой-то причине она не создалась автоматически, её необходимо создать вручную. Для этого выполните команду

sudo groupadd docker

Далее для добавления текущего пользователя в группу docker необходимо выполнить команду

sudo usermod -aG docker user_name

, где user_name — имя пользователя, которого нужно добавить в группу docker. Для проверки выполните команду

docker ps

она отображает список запущенных контейнеров.

Запуск первого контейнера

Чтобы полноценно проверить корректность установки Docker, загрузите тестовый образ. Для этого необходимо выполнить команду

docker run hello-world

Данная команда загрузит образ программы из онлайн-репозитория Docker hub (официальный реестр хранения образов программного обеспечения от Docker который используется по умолчанию) и автоматически запустит его. После выполнения будет выведена фраза Hello from Docker!, которая означает корректную установку и настройку Docker.

Как собрать свой контейнер с VideoSDK

Сборка контейнера

Создание контейнера выполняется в момент его запуска, и эти процессы в свою очередь запускаются с помощью команды

docker run

Утилите нужно передать образ, на основе которого будет создан контейнер, а также Dockerfile — файл конфигурации, в котором содержатся инструкции по созданию образа. Образ может быть локальным (находиться на компьютере) или указывать на образ, который надо загрузить из сети (Docker hub и др.). В данном случае образ будет использоваться из локального хранилища. Скачайте VideoSDK с нашего корпоративного GitHub, обязательно выберите вариант для Ubuntu 22.04:

Скачать VideoSDK

По кнопке ниже можно скачать архив с файлом Docker, перед использованием распакуйте архив.

Скачать Dockerfile

Нужно уточнить, что по умолчанию процессы в контейнере работают из-под пользователя root, но работать под рутом небезопасно, ввиду отсутствия ограничений у такого пользователя. Для предотвращения попадания нежелательной угрозы из контейнера на локальную машину, при сборке контейнера принудительно создается пользователь с обычным набором прав. В данном примере Dockerfile и образ VideoSDK находятся в одной директории, в ином случае укажите директорию Dockerfile с помощью флага -f. Команда для создания контейнера с VideoSDK будет выглядеть следующим образом:

docker build --build-arg username=sdkuser --build-arg password=123sdk456 -t tcvideosdk /home/$USER/dockerresources/videosdk

где:

  • --build-arg username=sdkuser — имя пользователя;

  • --build-arg password=123sdk456 — пароль пользователя;

  • -t tcvideosdk — имя образа;

  • /home/$USER/dockerresources/videosdk — путь к папке с Dockerfile и образом контейнера.

После выполнения команды начнётся сборка контейнера, весь процесс отображается в терминале. После окончания сборки выводится сообщение [+] Building 1169.1s (12/12) FINISHED.

Проверка сборки

Запустите созданный контейнер с помощью команды:

docker run -it -d -p 2222:8080 -p 3333:8765 -p 4444:8766 tcvideosdk:latest

где:

  • -it — подключает интерактивный терминал tty в контейнер;

  • -d — запуск контейнера в фоне;

  • -p 3333:8765 -p 4444:8766 tcvideosdk:latest — устанавливает порты для web-сокета и http-порта.

Чтобы отобразить в терминале список запущенных контейнеров введите команду

docker ps
alexadmin@DebDocker1:-5 dockerer run -it -d -p 2222:8080 -p 3333:8765 -p 4444:8766 tcvideosdk:latest f756fb106cedc657a51a90bad8996a03049e67d4a9402919e6b6b7aeada66ab4
alexadmin@DebDocker1:-5 docker ps
CONTAINER ID  IMAGE              COMMAND                 CREATED        STATUS        PORTS         NAMES
1756fb106ced  tcvideosdk:latest  "sh -c 'supervisord ."  9 seconds ago  Up 8 seconds  0.0.0.0:2222->8080/tcp, :::2222->8080/tcp,0.0.0.0:3333->8765/tcp, :::3333->8765/tcp, 0.0.0.0:4444->8766/tcp, :::4444->8766/tcp  affectionate_dewdney
alexadmin@DebDocker1:-5

Как видно из вывода терминала выше, контейнер успешно запущен и отображается в терминале. Проверьте доступность портов 3333 и 4444 с помощью команды

telnet localhost port

где port — порт для проверки.

alexadmin@DebDocker 1:~$ telnet localhost 3333
Trying ::1…
Connected to localhost.
Escape character is ']'.
Connection closed by foreign host.
alexadmin@DebDocker 1:~$ telnet localhost 4444
Trying : : 1.
Connected to localhost.
Escape character is
Connection closed by foreign host.

В терминале вывелось сообщение “Connected to localhost”, порт функционирует. Для проверки http-порта и web-сокета выполните http-запрос:

http://10.140.2.233:2222/public/default/config.json

Выполненный http-запрос вернет следующие данные:

{"config":
  {"websocket":
    {"hostname":null,
    "port":8765},
  "http":
    {"hostname":null,
    "port":8766}
    }
  }