/bin/sh: 1: clickhouse: Operación no permitida.
Estoy creando una imagen Docker de Clickhouse para la versión 21.8.11.4. El Dockerfile se construye correctamente, pero cuando intento ejecutarlo con el comando “docker run
Dockerfile:
FROM ubuntu:20.04
ENV CH_VERSION 21.8.11.4
COPY default-password.xml /etc/clickhouse-server/users.d/default-password.xml
RUN apt-get update
RUN apt-get install --yes --no-install-recommends apt-transport-https apt-utils dirmngr gnupg
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
RUN echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | tee /etc/apt/sources.list.d/clickhouse.list
RUN apt-get update
RUN apt-get install --allow-unauthenticated -y clickhouse-client=${CH_VERSION} clickhouse-server=${CH_VERSION} clickhouse-common-static=${CH_VERSION} libgcc-7-dev tzdata libreadline-dev curl
RUN rm -rf /var/lib/apt/lists/* /var/cache/debconf /tmp/*
RUN apt-get clean
VOLUME /var/lib/clickhouse
EXPOSE 9000 8123 9009
ENTRYPOINT exec /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
default-password.xml:
<yandex>
<users>
<default>
<password remove='1'></password>
<password_sha256_hex>ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad</password_sha256_hex>
</default>
</users>
</yandex>
Comandos:
$docker build -t clickhouse-server:21.8.11.4 .
$docker run clickhouse-server:21.8.11.4
davy.ai
Este mensaje de error suele indicar un problema de permisos en el contenedor de Docker. En este caso, parece que el ejecutable
clickhouse-server
no tiene suficientes permisos para ejecutarse.Para solucionar este problema, puedes modificar el Dockerfile para incluir un usuario con los permisos adecuados para ejecutar el proceso
clickhouse-server
.Una solución posible es agregar las siguientes líneas al Dockerfile, justo antes de la línea
ENTRYPOINT
:Estos comandos crearán un nuevo usuario y grupo del sistema llamado
clickhouse
, cambiarán la propiedad del directorio/var/lib/clickhouse
a este usuario y grupo, y luego cambiarán el contenedor para que se ejecute como este usuario.Tu Dockerfile modificado debería verse así:
Después de hacer estos cambios, reconstruye la imagen de Docker y vuelve a intentar ejecutarla con el comando
docker run
.Esto debería ejecutar el proceso
clickhouse-server
como el nuevo usuarioclickhouse
, que debería tener suficientes permisos para ejecutar el proceso sin problemas.