Перейти к содержанию

Дополнительная информация#

В данном разделе приводится следующая дополнительная информация:

Команды Docker#

Показать контейнеры#

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

docker ps

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

docker ps -a 

Копировать файлы в контейнер#

Можно переносить файлы в контейнер. Используйте команду docker cp для копирования файла в контейнер.

docker cp <file_location> <container_name>:<folder_inside_container>

Вход в контейнер#

Можно входить в отдельные контейнеры с помощью следующей команды:

docker exec -it <container_name> bash

Для выхода из контейнера используйте следующую команду:

exit

Имена образов#

Можно увидеть все имена образов с помощью команды

docker images

Просмотр логов контейнера#

Просмотреть логи контейнера можно с помощью следующей команды:

docker logs <container_name>

Удаление образа#

Если требуется удаление образа:

  • запустите команду docker images
  • найдите требуемый образ, например: dockerhub.visionlabs.ru/luna/facestream:v.5.2.8
  • скопируйте соответствующий ID образа из IMAGE ID, например, "61860d036d8c"
  • укажите его в команде удаления:
docker rmi -f 61860d036d8c

Удаление всех существующих образов:

docker rmi -f $(docker images -q)

Остановка контейнера#

Контейнер можно остановить с помощью следующей команды:

docker stop <container_name>

Остановка всех контейнеры:

docker stop $(docker ps -a -q)

Удаление контейнера#

Если необходимо удалить контейнер:

  • запустите команду "docker ps"
  • остановите контейнер (см. Остановка контейнера)
  • найдите требуемый образ, например: dockerhub.visionlabs.ru/luna/facestream:v.5.2.8
  • скопируйте соответствующий ID контейнера из столбца CONTAINER ID, например, "23f555be8f3a"
  • укажите его в команде удаления:
docker container rm -f 23f555be8f3a

Удаление всех контейнеров:

docker container rm -f $(docker container ls -aq)

Ключи запуска#

Ключи запуска задаются с помощью переменных окружения:

  • --env= — этот параметр задает переменные окружения, требуемые для запуска контейнера. Указываются следующие основные значения:

    • CONFIGURATOR_HOST — хост, на котором запущен сервис Configurator. Локальный хост задается в случае, если контейнер запущен на том же сервере, где работает Configurator.
    • CONFIGURATOR_PORT — порт прослушивания для сервиса Configurator. По умолчанию используется порт 5070.
    • PORT — порт, где FaceStream будет слушать.
    • STREAMS_ID — в теге задается список идентификаторов потоков, которые будут запрошены из LUNA Streams для обработки. Остальные потоки будут отфильтрованы. Параметр "stream_id" выдается в ответе на запрос "create stream".

      Если значение равно " " или тег "STREAMS_ID" не задан, то FaceStream будет брать из очереди все существующие "stream_id".

      Если задано несуществующее значение, то при запуске FaceStream будет указана ошибка о некорректном UUID.

      По умолчанию значение равно " ".

      Для использования ключа должны быть указаны переменные "CONFIGURATOR_HOST" и "CONFIGURATOR_PORT".

    • STREAMS_NAME — в теге задается список имен потоков. Имена потоков задаются с помощью параметра "name" во время их создания (запрос "create streams"). Потоки с данными именами будут запрошены из LUNA Streams для обработки. Остальные потоки будут отфильтрованы.

      В остальном принцип работы схож с тегом "STREAMS_ID".

    • GROUPS_ID и GROUPS_NAME — в тегах задаются список идентификаторов групп или список имён групп. Параметры "group_id" или "group_name" задаются во время создания потока (запрос "create stream"). Потоки с данными параметрами будут запрошены из LUNA Streams для обработки. Остальные потоки будут отфильтрованы.

      Если значение равно " " или теги "GROUPS_ID"/"GROUPS_NAME" не заданы, то FaceStream не будет фильтровать потоки по группам.

      Если задано несуществующее значение, то при запуске FaceStream будет указана ошибка о некорректном UUID.

      По умолчанию значение равно " ".

      Для использования ключей должны быть указаны переменные "CONFIGURATOR_HOST" и "CONFIGURATOR_PORT".

      Для тегов "STREAMS_NAME", "STREAMS_ID", "GROUPS_NAME" и "GROUPS_ID" можно задать несколько значений. Пример синтаксиса: --env=STREAMS_ID="037f3196-c874-4eca-9d7c-91fd8dfc9593 4caf7cf7-dd0d-4ad5-a35e-b263e742e28a"

    • CONFIGS_ID — тег LUNA Configurator, который связан с основными конфигурациями для работы FaceStream. Единый тег должен быть задан для "TRACK_ENGINE_CONFIG" и "FACE_STREAM_CONFIG".

      Если задано значение " "\, то будут использованы записи по умолчанию "TRACK_ENGINE_CONFIG" и "FACE_STREAM_CONFIG" из LUNA Configurator. Если запись по умолчанию не существует или содержит недопустимый для JSON синтаксис, то будет использован конфигурационный файл из комплекта поставки.

      По умолчанию значение равно " ".

      Для использования ключа должны быть указаны переменные "CONFIGURATOR_HOST" и "CONFIGURATOR_PORT".

    • CONFIG_RELOAD — тег, включающий проверку наличия изменений в секции "FACE_STREAM_CONFIG" сервиса LUNA Configurator и принимающий следующие значения:

      • "1" — отслеживание изменений включено, при наличии изменений в конфигурации будут автоматически перезапущены все контейнеры FaceStream;
      • "0" — отслеживание изменений отключено.

      По умолчанию значение равно "1".

    • PULLING_TIME — тег, задающий период получения новых параметров из секции "FACE_STREAM_CONFIG" сервиса LUNA Configurator в диапазоне [1...3600] сек. Используется совместно с тегом "CONFIG-RELOAD".

      По умолчанию значение равно "10".

  • --device= — данный параметр необходим для указания адреса USB устройства. Адрес должен быть указан в источнике потока при его создании. Пример: --device=/dev/video0.

См. принцип работы FaceStream с LUNA Configurator в разделе "Использование FaceStream с LUNA Configurator" руководства администратора.

Расшифровка параметров запуска контейнера#

Ниже приведена расшифровка параметров запуска контейнера:

  • docker run — команда для запуска выбранного образа в качестве нового контейнера.
  • -v — параметр volume позволяет загружать содержимое серверной папки в объем контейнера. Таким образом содержимое синхронизируется.
  • -v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \ — этот параметр позволяет использовать настройки FaceEngine из конфигурационного файла "faceengine.conf".
  • -v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \ — этот параметр позволяет монтировать конфигурационный файл среды выполнения в контейнер FaceStream. Перед изменением стандартных настроек требуется проконсультироваться со специалистами VisionLabs.
  • --network=host — этот параметр указывает, что отсутствует симуляция сети и используется серверная сеть. При необходимости изменить порт для сторонних контейнеров следует заменить эту строку на -p 5440:5432. Здесь первый порт 5440 — это локальный порт, а 5432 — это порт, используемый в контейнере.
  • /etc/localtime:/etc/localtime:ro — задает текущий часовой пояс, используемый системой контейнера.
  • --name=facestream — этот параметр задает имя запускаемого контейнера. Имя должно быть уникальным. Если уже существует контейнер с таким же именем, произойдет ошибка.
  • --restart=always — этот параметр определяет политику перезагрузки. Daemon всегда перезагружает контейнер вне зависимости от кода завершения.
  • --detach=true — запуск контейнера в фоновом режиме.

Запись логов на сервер#

Чтобы включить сохранение логов на сервер, необходимо:

  • создать директории для логов на сервере;
  • активировать запись логов и задать расположение хранения логов внутри контейнеров;
  • настроить синхронизацию директорий логов в контейнере с логами на сервере с помощью аргумента volume при старте каждого контейнера.

В скрипте Docker Compose не настроена синхронизация директорий с папками. Необходимо вручную добавить монтирование папок в файл docker-compose.yml.

Создание директории логов#

Ниже приведены примеры команд для создания директорий для хранения логов и присвоения им прав для FaceStream и LUNA Streams.

mkdir -p /tmp/logs/facestream /tmp/logs/streams
chown -R 1001:0 /tmp/logs/facestream /tmp/logs/streams

Активация записи логов#

Активация записи логов LUNA Streams#

Для активации записи в файл необходимо задать настройки log_to_file и folder_with_logs в секции <SERVICE_NAME>_LOGGER настроек LUNA Streams.

Перейдите в интерфейс сервиса Configurator (127.0.0.1:5070) и задайте путь расположения логов в контейнере в параметре folder_with_logs для сервиса LUNA Streams. Например, можно использовать путь /srv/logs.

Установите параметр log_to_file как true чтобы активировать запись логов в файл.

Активация записи логов FaceStream#

Для активации записи логов в файл необходимо задать значение настройки logging > mode в секции FACE_STREAM_CONFIG на l2f (выводить логи только в файл) или l2b (выводить логи и файл и в консоль).

Перейдите в интерфейс сервиса Configurator (127.0.0.1:5070) и укажите необходимое значение настройки. Путь расположения логов в контейнере FaceStream невозможно изменить. Необходимо указывать путь /srv/logs при монтировании.

По умолчанию в логах FaceStream выводятся только предупреждения системы. С помощью настройки параметра "severity" можно включить вывод ошибок (см. описание параметра в руководстве администратора).

Монтирование директорий с логами при старте сервисов#

Директория с логами монтируется с помощью следующего аргумента при старте контейнера:

-v <server_logs_folder>:<container_logs_folder> \

где <server_logs_folder> директория, созданная на этапе создания директории логов, а <container_logs_folder> директория, созданная на этапе активации записи логов.

Пример команды запуска FaceStream с монтированием директории с логами:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.2.8

Примеры команд запуска контейнеров ручным способом содержат эти аргументы.

Настройка ротации логов Docker#

Чтобы ограничить размер логов, генерируемых Docker, можно настроить автоматическую ротацию логов. Для этого необходимо добавить в файл /etc/docker/daemon.json следующие данные:

{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "5"
    }
}

Это позволит Docker хранить до 5 файлов логов на контейнер, при этом каждый файл будет ограничен 100 Мб.

После изменения файла необходимо перезапустить Docker:

systemctl reload docker

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