Запуск 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, важно понимать, как правильно монтировать файл конфигурации в контейнер. Ниже приведен пошаговый пример:

  1. Запустите контейнер без указания файла конфигурации и без монтирования директории данных, чтобы он сгенерировал конфигурацию по умолчанию:

    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
    
  2. Создайте директорию для файлов конфигурации и скопируйте сгенерированный файл конфигурации из контейнера прямо в нее:

    mkdir ydb_config
    docker cp ydb-local:/ydb_data/cluster/kikimr_configs/config.yaml ydb_config/my-ydb-config.yaml
    
  3. Остановите контейнер, если он все еще запущен, и удалите созданную директорию данных:

    docker stop ydb-local
    rm -rf ydb_data
    
  4. Отредактируйте скопированный файл конфигурации ydb_config/my-ydb-config.yaml по своему усмотрению.

  5. При запуске контейнера смонтируйте отредактированный файл конфигурации в /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 подменяет конфигурацию по умолчанию внутри контейнера.

Предыдущая
Следующая