Запуск YDB в Docker
Перед началом работы
Создайте каталог для тестирования YDB и используйте его в качестве текущего рабочего каталога:
mkdir ~/ydbd && cd ~/ydbd
mkdir ydb_data
mkdir ydb_certs
Запуск контейнера с YDB в Docker
Пример команды запуска YDB в Docker с подробными комментариями:
docker_args=(
-d # запуск в фоне
--rm # автоматическое удаление после установки
--name ydb-local # имя контейнера
--hostname localhost # хостейм
--platform linux/amd64 # платформа
-p 2135:2135 # открытие внешнего доступа к grpcs порту
-p 2136:2136 # открытие внешнего доступа к grpc порту
-p 8765:8765 # открытие внешнего доступа к http порту
-p 5432:5432 # открытие внешнего доступа к порту, обеспечивающему PostgreSQL-совместимость
-p 9092:9092 # открытие внешнего доступа к порту, обеспечивающему Kafka-совместимость
-v $(pwd)/ydb_certs:/ydb_certs # директория для TLS сертификатов
-v $(pwd)/ydb_data:/ydb_data # рабочая директория
-e GRPC_TLS_PORT=2135 # grpcs порт должен соответствовать тому, что опубликовано выше
-e GRPC_PORT=2136 # grpc порт должен соответствовать тому, что опубликовано выше
-e MON_PORT=8765 # http порт должен соответствовать тому, что опубликовано выше
-e YDB_KAFKA_PROXY_PORT=9092 # порт Kafka должен соответствовать тому, что опубликовано выше
ydbplatform/local-ydb:latest
)
docker run "${docker_args[@]}"
Примечание
При использовании Mac с процессором Apple Silicon, набор процессорных инструкций x86_64 можно эмулировать с помощью Rosetta:
- colima c параметрами
colima start --arch aarch64 --vm-type=vz --vz-rosetta; - Docker Desktop с установленной и включённой Rosetta 2.
Подробнее про переменные окружения, используемые при запуске Docker-контейнера с YDB, можно узнать в разделе Настройка Docker-контейнера YDB.
При указанных в примере выше параметрах и запуске Docker локально, Embedded UI YDB будет доступен по адресу http://localhost:8765.
Подробнее про остановку и удаление Docker-контейнера с YDB можно узнать в разделе Остановка Docker.
Переопределение файла конфигурации
По умолчанию при запуске контейнера Docker для YDB используется встроенный файл конфигурации, который обеспечивает стандартные параметры работы. Для переопределения файла конфигурации при запуске контейнера можно использовать аргумент --config-path, указав путь к своему файлу конфигурации, который предварительно примонтирован в контейнер:
docker run "${docker_args[@]}" --config-path /path/to/your/config/file
Для пользователей, не имеющих опыта работы с Docker, важно понимать, как правильно монтировать файл конфигурации в контейнер. Ниже приведен пошаговый пример:
-
Запустите контейнер без указания файла конфигурации и без монтирования директории данных, чтобы он сгенерировал конфигурацию по умолчанию:
docker run -d \ --rm \ --name ydb-local \ --hostname localhost \ --platform linux/amd64 \ -v $(pwd)/ydb_certs:/ydb_certs \ -e GRPC_TLS_PORT=2135 \ -e GRPC_PORT=2136 \ -e MON_PORT=8765 \ ydbplatform/local-ydb:latest -
Создайте директорию для файлов конфигурации и скопируйте сгенерированный файл конфигурации из контейнера прямо в нее:
mkdir ydb_config docker cp ydb-local:/ydb_data/cluster/kikimr_configs/config.yaml ydb_config/my-ydb-config.yaml -
Остановите контейнер, если он все еще запущен, и удалите созданную директорию данных:
docker stop ydb-local rm -rf ydb_data -
Отредактируйте скопированный файл конфигурации
ydb_config/my-ydb-config.yamlпо своему усмотрению. -
При запуске контейнера используйте флаг
-vдля монтирования директории с вашим файлом конфигурации в контейнер:docker_args=( -d --rm --name ydb-local --hostname localhost --platform linux/amd64 -p 2135:2135 -p 2136:2136 -p 8765:8765 -v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data -v $(pwd)/ydb_config:/ydb_config -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 ydbplatform/local-ydb:latest ) docker run "${docker_args[@]}" --config-path /ydb_config/my-ydb-config.yaml
В этом примере:
$(pwd)/ydb_config- локальная директория на вашем компьютере с файлом конфигурации/ydb_config- директория внутри контейнера, куда будет смонтирована ваша локальная директория/ydb_config/my-ydb-config.yaml- путь к файлу конфигурации внутри контейнера
Таким образом, ваш локальный файл конфигурации становится доступным внутри контейнера по указанному пути.