运行scrapinghub/splash时Docker出现root无--no-sandbox支持错误求助
解决Splash运行时的
Running as root without --no-sandbox is not supported错误 嘿,这个问题我之前折腾Splash的时候也碰到过,本质是因为Splash依赖的Chrome内核默认禁止以root用户身份在没有沙箱的情况下运行。给你几个实用的解决办法:
快速临时解决(适合本地开发)
直接在运行容器的命令里加上--no-sandbox参数就行,完整命令如下:docker run -p 8050:8050 scrapinghub/splash --no-sandbox这个参数会告诉Chrome内核跳过沙箱安全检查,允许root用户启动服务,虽然不够安全,但本地开发用完全没问题。
更安全的生产级方案
尽量避免以root用户运行容器,你可以通过两种方式实现:
一种是直接在运行命令里指定当前用户的ID(用id -u获取):docker run -p 8050:8050 --user $(id -u) scrapinghub/splash另一种更规范的方式是构建自定义镜像,创建专用运行用户:
创建一个Dockerfile文件,内容如下:FROM scrapinghub/splash RUN useradd -m splash_user && chown -R splash_user: /app USER splash_user然后构建并运行镜像:
docker build -t my-splash . docker run -p 8050:8050 my-splash这样就会以
splash_user身份运行Splash,符合安全最佳实践。额外提示
如果是在Windows或macOS的Docker Desktop上运行,偶尔也会碰到这个问题,第一种加--no-sandbox的方法同样适用——因为这两个系统的Docker本身就运行在虚拟机里,安全性影响不大。
内容的提问来源于stack exchange,提问作者Narendra Kumar
相关产品推荐
相关产品推荐

