Запуск YDB в Docker
Для отладки или тестирования вы можете запустить Docker-контейнер YDB.
Параметры соединения
В результате выполнения описанных ниже инструкций вы получите локальную базу данных YDB, к которой можно будет обратиться по следующим реквизитам:
- Эндпоинт:
grpc://localhost:2136
- Путь базы данных:
/local
- Аутентификация: Анонимная (без аутентификации)
- Эндпоинт:
grpcs://localhost:2135
- Путь базы данных:
/local
- Аутентификация: Анонимная (без аутентификации)
Установка
Загрузите актуальную публичную версию 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
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
Важно
На данный момент хранение данных на диске не поддерживается на Apple Silicon (M1 or M2). Используйте команду с вкладки "Хранение данных в памяти", если хотите попробовать 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 \
-e YDB_USE_IN_MEMORY_PDISKS=true \
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 Silicon (M1 или M2) возможен только в этом режиме.YDB_FEATURE_FLAGS
: Флаги, позволяющие включить функции, отключенные по-умолчанию. Используется для функций, находящихся в разработке (по-умолчанию они выключены). Перечисляются через запятую.POSTGRES_USER
- создать пользователя с указанным логином, используется для подключения через postgres-протокол.POSTGRES_PASSWORD
- задать пароль пользователя для подключения через postgres-протокол.YDB_TABLE_ENABLE_PREPARED_DDL
- временная опция, нужна для запуска Postgres-слоя совместимости, в будущем будет удалена.
Для эффективной работы YDB рекомендуется использовать физические (не виртуальные) диски объемом более 800 ГБ как блочные устройства.
Минимальный объем диска должен быть не менее 80 ГБ, при меньшем объеме узел YDB не сможет использовать устройство. Корректная и бесперебойная работа с дисками минимального объема не гарантируется. Использовать такие диски рекомендуется исключительно в ознакомительных целях.
Важно
Конфигурации с дисками объемом меньше 800 ГБ или с любыми видами виртуализации системы хранения нельзя использовать для сервисов, находящихся в промышленной эксплуатации, а также для тестирования производительности системы.
Мы не рекомендуем использовать для хранения данных YDB диски, которые используются другими процессами (в том числе операционной системой).
-p
: Опубликовать порты контейнера на хост-системе. Все применяемые порты должны быть явно перечислены, даже если используются значения по умолчанию.
Примечание
Инициализация Docker-контейнера, в зависимости от выделенных ресурсов, может занять несколько минут. До окончания инициализации база данных будет недоступна.
Выполнение запросов
Установите 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