【问题标题】:Changing user in docker container changes bash settings [closed]在 docker 容器中更改用户会更改 bash 设置 [关闭]
【发布时间】:2021-03-28 23:17:14
【问题描述】:

我遇到了这种行为: 我有一个 docker 镜像:

FROM ubuntu:latest
...

RUN useradd -m develop
USER develop

当我运行容器时:

docker run -it my_image

我得到一个具有所有功能的终端,例如 LS_COLORS、使用 TAB 完成文件/目录名称等。但是如果我使用 root 用户运行容器:

docker run -it -u 0 my_image

然后,在容器中:

~$ su develop

现在我的提示没有上述任何功能,而且很难使用。有人可以解释这种行为吗?我假设它与所有初始化脚本(例如 .bashrc、/etc/profile 等)有关,但我不太了解上述两种情况之间的区别。

编辑

感谢@ItayB 的回答,我也刚刚想通了:)。

但是,这种行为与我只是以开发身份登录的行为并不完全相同:

~$ docker run -it -u 0 build_agent:0.5
root@6acf7b900da3:/# su develop
$ bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

bash: /root/.bashrc: Permission denied
develop@6acf7b900da3:/$ cd ~
bash: cd: /root: Permission denied
develop@6acf7b900da3:/$ 

如您所见,环境变量仍然设置为就好像我是“Root”用户一样。这是为什么呢?

【问题讨论】:

  • su -p 将保留环境,但您将遇到的问题是用户开发可能无权访问 /root/.bashrc

标签: bash docker environment-variables


【解决方案1】:

我认为你应该在切换用户后显式调用bash

$ docker run -it -u 0 my_image
root@74765d85882a:/# su develop
$ bash
develop@74765d85882a:/$

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多