【发布时间】: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