Instalar ClickHouse con Docker
docker pull:
Versiones
- La etiqueta
latestapunta a la versión más reciente de la rama estable más reciente. - Las etiquetas de rama, como
22.2, apuntan a la versión más reciente de la rama correspondiente. - Las etiquetas de versión completa, como
22.2.3y22.2.3.5, apuntan a la versión correspondiente. - La etiqueta
headse genera a partir del commit más reciente de la rama predeterminada. - Cada etiqueta tiene un sufijo opcional,
-alpine, para indicar que se ha generado sobrealpine.
Compatibilidad
- La imagen amd64 requiere compatibilidad con las instrucciones SSE3. Prácticamente todas las CPU x86 posteriores a 2005 son compatibles con SSE3.
- La imagen arm64 requiere compatibilidad con la arquitectura ARMv8.2-A y además con el registro Load-Acquire RCpc. El registro es opcional en la versión ARMv8.2-A y obligatorio en ARMv8.3-A. Es compatible con instancias Graviton >=2 y con instancias de Azure y GCP. Algunos ejemplos de dispositivos no compatibles son Raspberry Pi 4 (ARMv8.0-A) y Jetson AGX Xavier/Orin (ARMv8.2-A).
- A partir de ClickHouse 24.11, las imágenes de Ubuntu pasaron a usar
ubuntu:22.04como imagen base. Requiere Docker >=20.10.10que incluya el parche. Como solución alternativa, puede usardocker run --security-opt seccomp=unconfined; sin embargo, esto tiene implicaciones de seguridad.
Cómo utilizar esta imagen
Iniciar la instancia del servidor
default, sin contraseña.
Conéctese desde un cliente nativo
Conectarse con curl
Detener / eliminar el contenedor
Red
el usuario predefinido
default no tiene acceso de red a menos que se establezca una contraseña;
consulta “Cómo crear la base de datos y el usuario predeterminados al iniciar” y “Gestionar el usuario default” más abajo--network=host
(lo que también permite obtener un mejor rendimiento de red):
El usuario predeterminado del ejemplo anterior está disponible solo para las peticiones desde localhost
Volúmenes
/var/lib/clickhouse/- carpeta principal donde ClickHouse almacena los datos/var/log/clickhouse-server/- logs
/etc/clickhouse-server/config.d/*.xml- archivos con ajustes de configuración del servidor/etc/clickhouse-server/users.d/*.xml- archivos con ajustes de configuración de usuarios/docker-entrypoint-initdb.d/- carpeta con scripts de inicialización de la base de datos (consulte más abajo).
Capacidades de Linux
Configuración
Iniciar una instancia del servidor con una configuración personalizada
Iniciar el servidor con un usuario personalizado
--user y monte /var/lib/clickhouse y /var/log/clickhouse-server dentro del contenedor. De lo contrario, la imagen mostrará un error y no se iniciará.
Iniciar el servidor desde root
Cómo crear una base de datos y un usuario predeterminados al iniciar
default) y una base de datos al iniciar el contenedor. Puedes hacerlo mediante las variables de entorno CLICKHOUSE_DB, CLICKHOUSE_USER, CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT y CLICKHOUSE_PASSWORD:
Gestión del usuario default
default tiene el acceso de red deshabilitado de forma predeterminada si no se establece ninguno de estos valores: CLICKHOUSE_USER, CLICKHOUSE_PASSWORD o CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT.
Hay una forma de hacer que el usuario default esté disponible de forma no segura: estableciendo la variable de entorno CLICKHOUSE_SKIP_USER_SETUP en 1:
Cómo extender esta imagen
*.sql, *.sql.gz o *.sh en /docker-entrypoint-initdb.d. Después de que el entrypoint llame a initdb, ejecutará todos los archivos *.sql, ejecutará todos los scripts *.sh ejecutables y cargará todos los scripts *.sh no ejecutables que encuentre en ese directorio para completar la inicialización antes de iniciar el servicio.
Los scripts de
/docker-entrypoint-initdb.d se ejecutan en orden alfabético según el nombre del archivo. Si sus scripts dependen unos de otros (por ejemplo, un script que crea vistas debe ejecutarse después del script que crea las tablas a las que hacen referencia), asegúrese de que los nombres de archivo queden ordenados correctamente.CLICKHOUSE_USER & CLICKHOUSE_PASSWORD, que se usarán con clickhouse-client durante la inicialización.
Por ejemplo, para agregar otro usuario y otra base de datos, añada lo siguiente a /docker-entrypoint-initdb.d/init-db.sh: