诀窍是使用
useradd而不是其交互式包装器
adduser。我通常使用以下方式创建用户:
RUN useradd -ms /bin/bash newuser
它为用户创建一个主目录,并确保bash是默认的shell。
然后,您可以添加:
USER newuserWORKDIR /home/newuser
到您的dockerfile。之后的每个命令以及交互式会话都将以用户身份执行
newuser:
docker run -t -i imagenewuser@131b7ad86360:~$
newuser在调用用户命令之前,您可能必须授予执行打算运行的程序的权限。
出于安全原因,在容器内使用非特权用户是一个好主意。它还有一些缺点。最重要的是,从您的图像派生图像的人将必须切换回root用户才能执行具有超级用户特权的命令。



