Перейти к основному содержанию

Установка ClickHouse через Docker

Для удобства ниже приводится руководство с Docker Hub. Доступные Docker-образы используют официальные deb-пакеты ClickHouse. Команда Docker pull:

Версии

  • Тег latest указывает на последний релиз в последней стабильной ветке.
  • Теги веток, такие как 22.2, указывают на последний релиз соответствующей ветки.
  • Теги полной версии, такие как 22.2.3 и 22.2.3.5, указывают на соответствующий релиз.
  • Тег head собирается из последнего коммита в ветке по умолчанию.
  • У каждого тега есть необязательный суффикс -alpine, который означает, что образ собран на базе alpine.

Совместимость

  • Образ amd64 требует поддержки инструкций SSE3. Практически все процессоры x86, выпущенные после 2005 года, поддерживают SSE3.
  • Образ arm64 требует поддержки архитектуры ARMv8.2-A и дополнительно регистра Load-Acquire RCpc. Этот регистр является необязательным в ARMv8.2-A и обязательным в ARMv8.3-A. Поддерживается в Graviton >=2, а также в инстансах Azure и GCP. Примеры неподдерживаемых устройств: Raspberry Pi 4 (ARMv8.0-A) и Jetson AGX Xavier/Orin (ARMv8.2-A).
  • Начиная с ClickHouse 24.11 образы Ubuntu используют ubuntu:22.04 в качестве базового образа. Требуется версия Docker >= 20.10.10, содержащая patch. В качестве обходного решения можно использовать docker run --security-opt seccomp=unconfined, однако это имеет последствия для безопасности.

Как использовать этот образ

Запуск экземпляра сервера

По умолчанию ClickHouse будет доступен только через сеть Docker. См. раздел о настройке сети ниже. По умолчанию указанный выше экземпляр сервера будет запускаться от имени пользователя default без пароля.

Подключитесь к нему из нативного клиента

Подробнее о клиенте ClickHouse см. в разделе клиент ClickHouse.

Подключение с помощью curl

См. HTTP-интерфейс ClickHouse, чтобы узнать больше об HTTP-интерфейсе.

Остановка и удаление контейнера

Сеть

у предопределённого пользователя default нет доступа к сети, если не задан пароль, см. “Как создать базу данных и пользователя по умолчанию при запуске” и “Управление пользователем default” ниже
Вы можете открыть доступ к ClickHouse, запущенному в Docker, сопоставив нужный порт изнутри контейнера с портами хоста:
Или разрешив контейнеру напрямую использовать порты хоста с помощью --network=host (это также может повысить производительность сети):
Пользователь по умолчанию из примера выше доступен только для запросов с localhost

Тома

Обычно, чтобы обеспечить постоянное хранение данных, внутри контейнера монтируют следующие папки:
  • /var/lib/clickhouse/ - основная папка, в которой ClickHouse хранит данные
  • /var/log/clickhouse-server/ - журналы
При необходимости можно также смонтировать:
  • /etc/clickhouse-server/config.d/*.xml - файлы с изменениями в конфигурации сервера
  • /etc/clickhouse-server/users.d/*.xml - файлы с изменениями в пользовательских настройках
  • /docker-entrypoint-initdb.d/ - каталог со скриптами инициализации базы данных (см. ниже).

Привилегии Linux

В ClickHouse есть некоторые расширенные функции, для которых нужно включить несколько привилегий Linux Они необязательны и могут быть включены с помощью следующих аргументов командной строки Docker:
Подробнее см. “Настройка привилегий CAP_IPC_LOCK и CAP_SYS_NICE в Docker”

Конфигурация

Контейнер использует порт 8123 для HTTP-интерфейса и порт 9000 для нативного клиента. Конфигурация ClickHouse задаётся файлом “config.xml” (документация)

Запустите экземпляр сервера с пользовательской конфигурацией

Запуск сервера от имени другого пользователя

Когда вы используете образ со смонтированными локальными каталогами, скорее всего, потребуется указать пользователя, чтобы сохранить правильного владельца файлов. Используйте аргумент --user и смонтируйте /var/lib/clickhouse и /var/log/clickhouse-server внутри контейнера. В противном случае образ выдаст ошибку и не запустится.

Запуск сервера от root

Запуск сервера от root полезен, когда включено пространство имен пользователя. Для этого выполните:

Как создать database и пользователя по умолчанию при запуске

Иногда при запуске контейнера может потребоваться создать пользователя (по умолчанию используется пользователь с именем default) и database. Это можно сделать с помощью переменных окружения CLICKHOUSE_DB, CLICKHOUSE_USER, CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT и CLICKHOUSE_PASSWORD:

Управление пользователем default

Для пользователя default по умолчанию отключён сетевой доступ, если не заданы CLICKHOUSE_USER, CLICKHOUSE_PASSWORD и CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT. Есть способ небезопасно включить доступ для пользователя default, установив переменную окружения CLICKHOUSE_SKIP_USER_SETUP в значение 1:

Как расширить этот образ

Чтобы выполнить дополнительную инициализацию в образе, созданном на основе этого, добавьте один или несколько скриптов *.sql, *.sql.gz или *.sh в каталог /docker-entrypoint-initdb.d. После того как entrypoint вызовет initdb, он выполнит все файлы *.sql, запустит все исполняемые скрипты *.sh и обработает через source все неисполняемые скрипты *.sh, найденные в этом каталоге, чтобы выполнить дополнительную инициализацию перед запуском сервиса.
Скрипты в /docker-entrypoint-initdb.d выполняются в алфавитном порядке по имени файла. Если ваши скрипты зависят друг от друга (например, скрипт, создающий представления, должен выполняться после скрипта, создающего таблицы, на которые они ссылаются), убедитесь, что имена файлов сортируются в правильном порядке.
Кроме того, вы можете задать переменные окружения CLICKHOUSE_USER и CLICKHOUSE_PASSWORD, которые будут использоваться для clickhouse-client во время инициализации. Например, чтобы добавить ещё одного пользователя и базу данных, добавьте следующее в /docker-entrypoint-initdb.d/init-db.sh:
Последнее изменение 19 июня 2026 г.