如何用root用户以外的新用户创build和运行docker容器?

我在使用docker时遇到了一个问题。 现在我有一个基于Ubuntu的Docker容器。 而在容器中,用户标识是默认的root,这不是我的期望,我想用户标识就像abc ,它是运行docker的HOST OS上的另一个用户帐户。 我尝试了以下方法,但都失败了:

 su abc; 

然后运行docker run xxx出一个容器,但是login容器,容器中的用户仍然是root

然后通过为docker run添加-u标志:如:

 docker run -t -i -u abc ubuntu /bin/bash 

泊坞窗显示错误unable to find user abc

有人能告诉我如何解决吗?

或者docker支持运行一个容器,其中的用户是一个特定的比默认的root

您可以在Docker镜像中创buildUser。 但为此,您将不得不扩展基本形象。 比如你可以在Ubuntu下面创build用户abc

 FROM ubuntu:14.04 RUN apt-get update # Replace 1000 with your user / group id RUN export uid=1000 gid=1000 && \ mkdir -p /home/abc && \ echo "abc:x:${uid}:${gid}:Abc,,,:/home/abc:/bin/bash" >> /etc/passwd && \ echo "abc:x:${uid}:" >> /etc/group && \ echo "abc ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/abc && \ chmod 0440 /etc/sudoers.d/abc && \ chown ${uid}:${gid} -R /home/abc USER abc ENV HOME /home/abc WORKDIR $HOME CMD /bin/bash 

然后你build立并运行它,

 docker build -t abc . docker run -it abc bash 

你应该看到像下面的用户abc bash提示,

 abc@<container-hostname>:~$