Дополнительная информация#
В данном разделе приводится следующая дополнительная информация:
- Полезные команды для работы с Docker
- Описание ключей запуска
- Действия по включению сохранения логов в файлы
- Настройка ротации логов Docker
Команды 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
Вышеописанные изменения являются значениями по умолчанию для любого вновь созданного контейнера, они не применяются к уже созданным контейнерам.