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

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

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

Команды 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 images
  • найдите требуемый образ, например dockerhub.visionlabs.ru/luna/luna-image-store
  • скопируйте соответствующий 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/luna-image-store
  • скопируйте соответствующий ID контейнера из столбца CONTAINER ID, например, "23f555be8f3a"
  • укажите его в команде удаления:
docker container rm -f 23f555be8f3a

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

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

Проверка логов сервисов#

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

docker logs <container_name>

Описание параметров запуска#

При запуске Docker-контейнера для какого-либо из сервисов LUNA Index Module необходимо задать дополнительные параметры, требуемые для работы этого сервиса.

Параметры, требуемые для конкретного контейнера, описаны в разделе, посвященном запуску этого контейнера.

Все параметры, приведенные в примере запуска сервиса, необходимы для корректного запуска и работы сервиса.

Параметры запуска сервисов#

Пример команды запуска контейнеров сервисов LP:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=<Port_of_the_launched_service> \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--name=<service_container_name> \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version>

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

  • docker run — команда для запуска выбранного образа в качестве нового контейнера.

  • dockerhub.visionlabs.ru/luna/<service-name>:<version> — позволяет задать образ, требуемый для запуска контейнера.

Ссылки для загрузки требуемых образов контейнера доступны в описании запуска соответствующего контейнера.

  • --network=host — указывает, что отсутствует симуляция сети и используется серверная сеть. При необходимости изменить порт для сторонних контейнеров следует заменить эту строку на -p 5440:5432. Здесь первый порт 5440 — это локальный порт, а 5432 — это порт, используемый в контейнере. Пример приведен для PostgreSQL.

  • --env= — задает переменные окружения, требуемые для запуска контейнера (см. раздел "Аргументы сервисов").

  • --name=<service_container_name> — задает имя запускаемого контейнера. Имя должно быть уникальным. Если уже существует контейнер с таким же именем, произойдет ошибка.

  • --restart=always — определяет политику перезагрузки. Daemon всегда перезагружает контейнер вне зависимости от кода завершения.

  • --detach=true — позволяет запустить контейнер в фоновом режиме.

  • -v — позволяет загружать содержимое серверной папки в объем контейнера. Таким образом содержимое синхронизируется. Загружаются следующие общие данные:

  • /etc/localtime:/etc/localtime:ro — задает текущий часовой пояс, используемый системой контейнера.

  • /tmp/logs/<service>:/srv/logs/ — позволяет копировать папку с записями (логами) сервиса на сервер в директорию /tmp/logs/<service>. Директорию для хранения логов можно изменить при желании.

Аргументы сервисов#

Каждый сервис в LUNA PLATFORM имеет свои собственные аргументы запуска. Эти аргументы можно передать через:

  • задание флага для скрипта запуска (run.py) соответствующего сервиса
  • установку отдельных переменных окружения (--env) в командной строке Docker

Например, с использованием флага --help можно получить список всех доступных аргументов. Пример передачи аргумента для сервиса API может выглядеть следующим образом:

docker run --rm dockerhub.visionlabs.ru/luna/luna-api:v.6.40.0 python3 /srv/luna_api/run.py --help

Список основных аргументов:

Флаг в строке запуска

Переменная окружения

Описание

--port

PORT

Порт, на котором сервис будет ожидать подключений.

--workers

WORKER_COUNT

Количество "рабочих процессов" для сервиса.

--log_suffix

LOG_SUFFIX

Суффикс, добавляемый к именам файлов логов (при включенном параметре записи логов в файл).

--config-reload

RELOAD_CONFIG

Включение автоматической перезагрузки конфигураций. См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5.

--pulling-time

RELOAD_CONFIG_INTERVAL

Период проверки конфигураций (по умолчанию 10 секунд). См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5.

--luna-config

CONFIGURATOR_HOST, CONFIGURATOR_PORT

Адрес сервиса Configurator для загрузки настроек. Для --luna-config передается в формате http://localhost:5070/1. Для переменных окружения хост и порт задаются явно. Если аргумент не задан, то будет использован конфигурационный файл по умолчанию.

--config

Нет

Путь до конфигурационного файла с настройками сервиса.

--<config_name>

Нет

Тег указанной настройки в Configurator. При задании данной настройки будет использовано значение тегированной настройки. Пример: --LUNA_MONITORING TAG_1. |

Примечание. Необходимо заранее присвоить тег соответствующим настройкам в Configurator.

Примечание. Работает только с флагом --luna-config.

--tls_cert

Нет

Путь к SSL-сертификату для запуска сервиса с использованием протокола HTTPS.

--tls_key

Нет

Путь к SSL-закрытому ключу для запуска сервиса с использованием протокола HTTPS.

--tls_key_pass

Нет

Пароль для SSL-закрытого ключа для запуска сервиса с использованием протокола HTTPS.

Перечень аргументов может отличаться в зависимости от сервиса.

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

Для переопределения настроек используется префикс VL_SETTINGS. Примеры:

  • --env=VL_SETTINGS.LUNA_MONITORING.SEND_DATA_FOR_MONITORING=0. Использование переменной окружения из данного примера установит значение настройки "SEND_DATA_FOR_MONITORING" для секции "LUNA_MONITORING" равным "0".
  • --env=VL_SETTINGS.OTHER.STORAGE_TIME=LOCAL. Для несоставных настроек (настроек, которые расположены в секции "OTHER" в конфигурационном файле) необходимо указать префикс "OTHER". Использование переменной окружения из данного примера установит значение настройки "STORAGE_TIME" (если сервис использует данную настройку) на значение "LOCAL".

Передача флагов с использованием переменной окружения

Флаги, для которых явно не выделена переменная окружения, можно передать с помощью переменной окружения EXTEND_CMD.

Например, можно передать тег настроек следующим способом:

--env=EXTEND_CMD="--LUNA_MONITORING=TAG_1 --LUNA_EVENTS_DB=TAG_2"
  • /var/lib/luna/lim_storage:/srv/local_storage — позволяет смонтировать директорию для хранения индексов в локальное хранилище. Расположение и название директории для хранения индексов внутри контейнеров LIM задается в настройках "INDEX_STORAGE_LOCAL" сервисов LIM. Обратите внимание, что для всех трех сервисов директория должна быть одинаковой. Локальную директорияю можно изменить при желании.

Параметры создания баз данных#

Пример команды запуска контейнеров для миграции баз данных или их создания:

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version> \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1

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

--rm — этот параметр указывает, удаляется ли контейнер после завершения обработки всех заданных скриптов.

python3 ./base_scripts/db_create.py — этот параметр содержит версию Python и скрипт db_create.py, запускаемый в контейнере. Этот скрипт используется для создания структуры базы данных.

--luna-config http://localhost:5070/1 — этот параметр указывает, откуда запущенный скрипт должен получать конфигурации. По умолчанию конфигурации запрашиваются сервисами от сервиса Configurator.

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

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

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

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

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

mkdir -p /tmp/logs/lim-manager /tmp/logs/lim-indexer /tmp/logs/lim-matcher /tmp/logs/python-matcher-proxy
chown -R 1001:0 /tmp/logs/lim-manager /tmp/logs/lim-indexer /tmp/logs/lim-matcher /tmp/logs/python-matcher-proxy

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

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

Автоматический способ

Для обновления настроек ведения логов можно использовать файл настроек logging.json, предоставленный в комплекте поставки.

Выполните следующую команду:

docker cp /var/lib/luna/lim-current/example-docker/configs/logging.json luna-configurator:/srv/luna_configurator/used_dumps/logging.json

Обновите настройки записи логов с помощью скопированного файла.

docker exec -it luna-configurator python3 ./base_scripts/db_create.py --dump-file /srv/luna_configurator/used_dumps/logging.json

Ручной способ

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

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

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

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

-v <server_logs_folder>:<container_logs_folder> \

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

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

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5190 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/lim-manager:/srv/logs \
-v /var/lib/luna/lim_storage:/srv/local_storage \
--name=lim-manager \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/lim-manager:v.0.6.1

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