Установка ClickHouse через Docker
Версии
- Тег
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, однако это имеет последствия для безопасности.
Как использовать этот образ
Запуск экземпляра сервера
default без пароля.
Подключитесь к нему из нативного клиента
Подключение с помощью curl
Остановка и удаление контейнера
Сеть
у предопределённого пользователя
default нет доступа к сети, если не задан пароль,
см. “Как создать базу данных и пользователя по умолчанию при запуске” и “Управление пользователем default” ниже--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
Конфигурация
Запустите экземпляр сервера с пользовательской конфигурацией
Запуск сервера от имени другого пользователя
--user и смонтируйте /var/lib/clickhouse и /var/log/clickhouse-server внутри контейнера. В противном случае образ выдаст ошибку и не запустится.
Запуск сервера от 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: