关于docker-compose启动elasticsearch:7.17.29报"permission denied": unknown错误解决
问题:
docker-compse up -d 启动报错
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: container_linux.go:329: starting container process caused "permission denied": unknown
但是,加上参数 privileged ,错误立马消失,真是服了,又不让用这个参数。
问题解决:
docker-compose.yml加上这个
security_opt:
- seccomp:unconfined # 关键:禁用 seccomp 过滤,解决 permission denied
cap_add:
- IPC_LOCK # 允许内存锁定
- SYS_RESOURCE # 允许调整资源限制(nofile, memlock)
然后给文件赋权:
chmod g+rwx /data/777/es/{data,logs,config}
chgrp 0 /data/777/es/{data,logs,config}
当然更安全的是
方案 1:使用自定义 seccomp 配置(最安全)
原理:创建一个自定义的 seccomp 配置文件,只允许 Elasticsearch 必要的系统调用,而不是完全禁用 seccomp。
步骤:
- 创建自定义 seccomp 配置文件
elasticsearch-seccomp.json - 在 docker-compose.yml 中引用该文件
配置示例:
security_opt:
- seccomp:./elasticsearch-seccomp.json