Создание и запуск Docker-контейнера с TrueConf VideoSDK
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:
По кнопке ниже можно скачать архив с файлом Docker, перед использованием распакуйте архив.
Нужно уточнить, что по умолчанию процессы в контейнере работают из-под пользователя 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 psalexadmin@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}
}
}