我正在编写一个Dockerfile来自定义parrotsec/security容器,以更好地适应我的首选项,并且我希望zsh作为root的默认shell。我试着用
RUN chsh -s /usr/bin/zsh以及
RUN usermod --shell /usr/bin/zsh root但是在构建映像并运行它之后,根用户的shell仍然是bash。
发布于 2022-09-09 17:17:22
我相信您需要在您的Dockerfile中添加一个ENTRYPOINT。如果您运行一个docker inspect <image>,您将在输出中看到一个入口条目。
请参阅Docker Spawn a shell as a user instead of root,它似乎与您的情况密切相关。
发布于 2022-09-10 08:41:07
如果在用户命令之后,后续运行命令使用了用户设置的默认shell,那就太好了。
这与#7961类似,但它不仅仅是简单地设置环境变量--例如,在ENV /bin/bash命令仍然使用/bin/sh之后。
现在有几种方法可以解决这一问题,但这两种方法都不是特别好:
使用exec表单并指定一个不同的shell:
RUN ["/bin/bash", "-c", "cmd"]
Point /bin/sh to /bin/bash and manually source:
RUN rm /bin/sh && ln -sf /bin/bash /bin/sh
RUN source ~/.profile && cmd配置文件必须来源,因为当bash从/bin/sh调用时,它不会加载配置文件。(请参阅手册页),RUN命令为什么不能只为活动用户使用shell设置?(例如,使用useradd -s /bin/bash创建的用户。)
https://stackoverflow.com/questions/73665429
复制相似问题