Запуск YDB в Docker

Для отладки или тестирования вы можете запустить Docker-контейнер YDB.

Параметры соединения

В результате выполнения описанных ниже инструкций вы получите локальную базу данных YDB, к которой можно будет обратиться по следующим реквизитам:

Установка

Загрузите актуальную публичную версию Docker-образа:

docker pull cr.yandex/yc/yandex-docker-local-ydb:latest

Проверьте, что Docker-образ успешно выгружен:

docker image list | grep cr.yandex/yc/yandex-docker-local-ydb

Результат выполнения:

cr.yandex/yc/yandex-docker-local-ydb           latest   b73c5c1441af   2 months ago   793MB

Запуск

Docker-контейнер YDB использует ресурсы хост-системы (CPU, RAM) в пределах выделенных настройками Docker.

Docker-контейнер YDB хранит данные в файловой системе контейнера, разделы которой отражаются на директории в хост-системе. Приведенная ниже команда запуска контейнера создаст файлы в текущей директории, поэтому перед запуском создайте рабочую директорию, и выполняйте запуск из неё:

docker run -d --rm --name ydb-local -h localhost \
  -p 2135:2135 -p 8765:8765 -p 2136:2136 \
  -v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data \
  -e YDB_DEFAULT_LOG_LEVEL=NOTICE \
  -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 \
  cr.yandex/yc/yandex-docker-local-ydb:latest

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

Параметры запуска

-d: Запустить Docker-контейнер в фоновом режиме.

--rm: Удалить контейнер после завершения его работы.

--name: Имя контейнера. Укажите ydb-local, чтобы приведенные ниже инструкции по остановке контейнера можно было выполнить копированием текста через буфер обмена.

-h: Имя хоста контейнера. Должно быть обязательно передано значение localhost, иначе контейнер будет запущен со случайным именем хоста.

-v: Монтировать директории хост-системы в контейнер в виде <директория хост-системы>:<директория монтирования в контейнере>. Контейнер YDB использует следующие директории монтирования:

  • /ydb_data: Размещение данных. Если данная директория не смонтирована, то контейнер будет запущен без сохранения данных на диск хост-системы.
  • /ydb_certs: Размещение сертификатов для TLS соединения. Запущенный контейнер запишет туда сертификаты, которые вам нужно использовать для клиентского подключения с использованием TLS. Если данная директория не смонтирована, то вы не сможете подключиться по TLS, так как не будете обладать информацией о сертификате.

-e: Задать переменные окружения в виде <имя>=<значение>. Контейнер YDB использует следующие переменные окружения:

  • YDB_DEFAULT_LOG_LEVEL: Уровень логирования. Допустимые значения: CRIT, ERROR, WARN, NOTICE, INFO. По умолчанию NOTICE.
  • GRPC_PORT: Порт для нешифрованных соединений. По умолчанию 2136.
  • GRPC_TLS_PORT: Порт для соединений с использованием TLS. По умолчанию 2135.
  • MON_PORT: Порт для встроенного web-ui со средствами мониторинга и интроспекции. По умолчанию 8765.
  • YDB_PDISK_SIZE: Размер диска для хранения данных в формате <NUM>GB (например, YDB_PDISK_SIZE=128GB). Допустимые значения: от 80GB и выше. По умолчанию 80GB.
  • YDB_USE_IN_MEMORY_PDISKS: Использование дисков в памяти. Допустимые значения true, false, по умолчанию false. Во включенном состоянии не использует файловую систему контейнера для работы с данными, все данные хранятся только в памяти процесса, и теряются при его остановке. В настоящее время запуск контейнера на процессоре Apple M1 возможен только в этом режиме.

Для эффективной работы YDB рекомендуется использовать физические (не виртуальные) диски размером более 800 ГБ как блочные устройства.

Минимальный размер диска должен быть не менее 80 ГБ, при меньшем размере узел не сможет использовать устройство. Корректная и бесперебойная работа с дисками минимального размера не гарантируется. Использовать такие диски рекомендуется исключительно в ознакомительных целях.

Важно

Конфигурации с дисками меньше 800 ГБ или с любыми видами виртуализации системы хранения нельзя использовать для продакшн-сервисов, а также для тестирования производительности системы.

-p: Опубликовать порты контейнера на хост-системе. Все применяемые порты должны быть явно перечислены, даже если используются значения по умолчанию.

Примечание

Инициализация Docker-контейнера, в зависимости от выделенных ресурсов, может занять несколько минут. До окончания инициализации база данных будет недоступна.

Выполнение запросов

Установите YDB CLI и выполните запросы, как описано в статье YDB CLI - Начало работы, используя эндпоинт и путь базы данных в начале данной статьи, например:

ydb -e grpc://localhost:2136 -d /local scheme ls

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

ydb -e grpcs://localhost:2135 --ca-file ydb_certs/ca.pem -d /local scheme ls

Предсобранная версия YDB CLI также доступа внутри образа:

docker exec <container_id> /ydb -e grpc://localhost:2136 -d /local scheme ls

, где

<container_id>: идентификатор контейнера, выведенный при его запуске.

Остановка

По окончании работы остановите Docker-контейнер:

docker kill ydb-local

Лицензия и используемые компоненты

В корне Docker-контейнера расположены файл с текстом лицензионного соглашения (LICENSE) и список используемых компонентов и их лицензии (THIRD_PARTY_LICENSES).

Просмотрите текст лицензионного соглашения:

docker run --rm -it --entrypoint cat cr.yandex/yc/yandex-docker-local-ydb LICENSE

Просмотрите все использованные при создании компоненты и их лицензии:

docker run --rm -it --entrypoint cat cr.yandex/yc/yandex-docker-local-ydb THIRD_PARTY_LICENSES