Установка ClickHouse с использованием Docker
Руководство на Docker Hub воспроизведено ниже для удобства. Доступные Docker-образы используют официальные пакеты deb для 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, содержащей патч. В качестве обходного решения вы можете использоватьdocker run --security-opt seccomp=unconfined; однако это имеет последствия для безопасности.
Как использовать этот образ
Запуск экземпляра сервера
По умолчанию ClickHouse будет доступен только через Docker сеть. См. раздел о сетях ниже.
По умолчанию вышеуказанный экземпляр сервера будет запущен под пользователем default без пароля.
Подключение к нему из родного клиента
См. ClickHouse client для получения дополнительной информации о клиенте ClickHouse.
Подключение к нему с помощью curl
См. ClickHouse HTTP Interface для получения дополнительной информации о HTTP интерфейсе.
Остановка / удаление контейнера
Сеть
предопределённый пользователь default не имеет доступа к сети, если пароль не установлен,
см. "Как создать базу данных и пользователя по умолчанию при запуске" и "Управление пользователем default" ниже
Вы можете сделать ваш ClickHouse, работающий в docker, доступным, сопоставив конкретный порт изнутри контейнера, используя порты хоста:
Или разрешив контейнеру использовать порты хоста напрямую с помощью --network=host
(также позволяет достичь лучшей производительности сети):
Пользователь default в приведенном выше примере доступен только для запросов 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 полезен в случаях, когда включено пространство имен пользователей. Для этого запустите:
Как создать базу данных и пользователя по умолчанию при старте
Иногда вы можете захотеть создать пользователя (по умолчанию используется пользователь с именем default) и базу данных при запуске контейнера. Вы можете сделать это, используя переменные окружения 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. После вызова точки входа initdb, будут выполнены все файлы *.sql, исполняемые скрипты *.sh и скрипты *.sh, которые не являются исполняемыми, найденные в этой директории, чтобы провести дальнейшую инициализацию перед запуском сервиса.
Также вы можете предоставить переменные окружения CLICKHOUSE_USER и CLICKHOUSE_PASSWORD, которые будут использоваться для clickhouse-client во время инициализации.
Например, чтобы добавить другого пользователя и базу данных, добавьте следующее в /docker-entrypoint-initdb.d/init-db.sh: