Запуск 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.
Если не включена Rosetta 2, в команду запуска Docker-контейнера необходимо добавить параметр -e YDB_USE_IN_MEMORY_PDISKS=true. См. Настройка Docker-контейнера YDB.
Подробнее про переменные окружения, используемые при запуске Docker-контейнера с YDB, можно узнать в разделе Настройка Docker-контейнера YDB.
При указанных в примере выше параметрах и запуске Docker локально, Embedded UI YDB будет доступен по адресу http://localhost:8765.
Подробнее про остановку и удаление Docker-контейнера с YDB можно узнать в разделе Остановка Docker.
Переопределение файла конфигурации
По умолчанию при запуске контейнера Docker для YDB используется встроенный файл конфигурации, который обеспечивает стандартные параметры работы. Чтобы использовать свой конфиг, смонтируйте его в /ydb_data/cluster/kikimr_configs/config.yaml:
docker run "${docker_args[@]}" \
-v $(pwd)/ydb_config/my-ydb-config.yaml:/ydb_data/cluster/kikimr_configs/config.yaml
Для пользователей, не имеющих опыта работы с 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по своему усмотрению. -
При запуске контейнера смонтируйте отредактированный файл конфигурации в
/ydb_data/cluster/kikimr_configs/config.yaml: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/my-ydb-config.yaml:/ydb_data/cluster/kikimr_configs/config.yaml -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 ydbplatform/local-ydb:latest ) docker run "${docker_args[@]}"
В этом примере локальный файл ydb_config/my-ydb-config.yaml подменяет конфигурацию по умолчанию внутри контейнера.