构建ClickHouse 21.8.11.4 Docker镜像运行报Operation not permitted如何解决
ClickHouse容器启动Operation not permitted报错解决方案
报错原因
ClickHouse 21.8版本运行过程中需要调用调整进程优先级、锁定内存等系统接口,这类操作需要SYS_NICE权限,Docker容器默认启动时不会授予该权限,因此触发操作不允许的报错。
解决方法
方法1:启动时添加权限参数(推荐)
在原有docker run命令中加入--cap-add SYS_NICE参数即可:
docker run --cap-add SYS_NICE clickhouse-server:21.8.11.4
如果加了上述参数还是报错,可额外添加关闭seccomp安全过滤的参数(生产环境谨慎使用,建议先排查其他原因):
docker run --cap-add SYS_NICE --security-opt seccomp=unconfined clickhouse-server:21.8.11.4
如果宿主机是CentOS/RHEL系列系统,存在SELinux拦截的可能,可额外添加参数关闭SELinux标签限制:
docker run --cap-add SYS_NICE --security-opt label=disable clickhouse-server:21.8.11.4
方法2:Dockerfile优化(可选)
如果需要镜像默认使用正确用户启动,可在Dockerfile的ENTRYPOINT指令前添加USER指令,确保使用ClickHouse安装时默认创建的普通用户运行服务,避免root权限相关的额外问题:
# 原有内容保持不变 USER clickhouse ENTRYPOINT exec /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
修改后重新构建镜像即可,启动时还是需要加--cap-add SYS_NICE参数。
验证启动
容器启动后执行以下命令验证服务是否正常:
curl http://容器IP:8123
正常返回Ok.即代表服务启动成功。
内容的提问来源于stack exchange,提问作者aac
相关产品推荐
相关产品推荐

