首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dockerfile中更改根shell

如何在Dockerfile中更改根shell
EN

Stack Overflow用户
提问于 2022-09-09 17:07:47
回答 2查看 123关注 0票数 1

我正在编写一个Dockerfile来自定义parrotsec/security容器,以更好地适应我的首选项,并且我希望zsh作为root的默认shell。我试着用

代码语言:javascript
复制
RUN chsh -s /usr/bin/zsh

以及

代码语言:javascript
复制
RUN usermod --shell /usr/bin/zsh root

但是在构建映像并运行它之后,根用户的shell仍然是bash。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-09 17:17:22

我相信您需要在您的Dockerfile中添加一个ENTRYPOINT。如果您运行一个docker inspect <image>,您将在输出中看到一个入口条目。

请参阅Docker Spawn a shell as a user instead of root,它似乎与您的情况密切相关。

票数 1
EN

Stack Overflow用户

发布于 2022-09-10 08:41:07

如果在用户命令之后,后续运行命令使用了用户设置的默认shell,那就太好了。

这与#7961类似,但它不仅仅是简单地设置环境变量--例如,在ENV /bin/bash命令仍然使用/bin/sh之后。

现在有几种方法可以解决这一问题,但这两种方法都不是特别好:

使用exec表单并指定一个不同的shell:

代码语言:javascript
复制
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创建的用户。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73665429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档