第一个容器设置用户泊坞窗的PATH
FROM ubuntu:15.10
USER root
RUN groupadd -r docker && useradd -r -g docker docker
USER docker
ENV PATH /hello-world:$PATH
第二个容器
FROM step_1
USER root
RUN echo $PATH
当我进入第二个容器并切换到用户docker时,PATH变量被重置。如果在第二个容器中,我没有切换到root用户,变量保持保存。 为什么会这样?我如何为所有用户docker保存变量PATH?
命令日志:
docker build -t step_1 step_1/
docker build -t step_2 step_2/
docker run -it step_2 bash
root@0784c73a84e2:/# echo $PATH
/hello-world:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
su docker
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
答案 0 :(得分:0)
您为多个帐户设置了$PATH
变量。为什么要在Docker容器中使用多个系统用户?我不确定你试图实现什么,但我认为这将违背单一用途容器的概念。
如果您只想在构建过程中以特权用户身份执行某些命令,则不必切换用户也不必使用sudo。除非另有说明,否则Dockerfile中的每个命令都以root身份执行。
答案 1 :(得分:0)
FROM ubuntu:15.10
USER root
没有做任何事情,你已经在容器内扎根了。
Per the docs,ENV
变量集在图像之间保持不变:
从结果图像运行容器时,使用ENV设置的环境变量将保持不变。您可以使用docker inspect ...
查看值
忽略以上所有内容,我无法复制此问题,它对我来说很好。你可以粘贴你的完整Dockerfiles和你正在运行的命令来构建等......?