Dockerfile基于nginx镜像触发Dockle的CIS-DI-0010错误的排查与解决
解决Dockle检测nginx镜像触发CIS-DI-0010错误的问题
错误原因
触发CIS-DI-0010错误的核心逻辑:
- NGINX_GPGKEY是nginx官方基础镜像构建阶段临时定义的变量,仅用于获取验证nginx软件包签名的GPG密钥,本身并非敏感凭据。
- Dockle的扫描规则会对包含"GPGKEY"这类关键词的环境变量做敏感检测,即便该变量只是在构建命令的子shell中临时使用、并未保留到最终镜像的运行环境里,Dockle扫描镜像构建历史时仍会触发误判。
解决方法
1. 无需修改现有Dockerfile(推荐)
该变量仅存在于基础镜像的构建历史中,不会进入最终镜像的运行环境,不存在实际的凭据泄露风险,完全可以忽略该误报。
2. 更换基础镜像(可选)
若希望彻底避免这类检测,可尝试使用nginx的alpine版本作为基础镜像:
FROM nginx:alpine
注意:alpine版本基于musl libc,与debian/ubuntu版本的glibc存在差异,需验证你的应用(如hello.fcgi)是否能正常运行。
让Dockle不再提示该错误的方式
方式1:命令行参数忽略指定键
运行Dockle检测时,添加--accept-key参数指定忽略NGINX_GPGKEY:
dockle --accept-key NGINX_GPGKEY your-image-tag
方式2:配置文件全局忽略
创建dockle.yaml配置文件,添加如下内容,后续扫描会自动忽略该键:
acceptKeys: - NGINX_GPGKEY
你的Dockerfile
FROM nginx:latest WORKDIR / RUN apt-get update && apt-get install -y \ gcc \ libfcgi-dev \ spawn-fcgi \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN chmod 777 /var/cache/nginx/ /var/run/ COPY server/nginx/nginx.conf /etc/nginx/ COPY server/hello.c /etc/nginx/ COPY server/span-fcgi.sh /etc/nginx/ RUN chmod +x /etc/nginx/span-fcgi.sh \ && gcc -o /etc/nginx/hello.fcgi /etc/nginx/hello.c -lpthread -lfcgi \ && usermod -aG root,gnats,daemon,disk,sudo nginx EXPOSE 81 USER nginx CMD ["/etc/nginx/span-fcgi.sh"]
span-fcgi.sh脚本
#!/bin/bash spawn-fcgi -a 127.0.0.1 -p 8080 -f /etc/nginx/hello.fcgi -F 1 nginx -g 'daemon off;
内容的提问来源于stack exchange,提问作者CCannel
相关产品推荐
相关产品推荐

