如何使用除root之外的新用户创建和运行docker容器?

时间:2016-04-08 02:42:15

标签: docker

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

su abc;

然后运行docker run xxx以启动容器,但登录容器,容器中的用户仍为root

然后为docker run添加-u标志:like:

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

码头工具显示错误unable to find user abc

有人可以告诉我如何解决它吗?

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

2 个答案:

答案 0 :(得分:1)

您可以在Docker镜像中创建用户。但为此你必须扩展基本图像。例如,您可以在Ubuntu中创建用户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

然后你构建并运行它,

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

你应该看到用户abc的bash提示符,如下所示,

abc@<container-hostname>:~$

答案 1 :(得分:0)

根据https://medium.com/redbubble/running-a-docker-container-as-a-non-root-user-7d2e00f8ee15,这是可能的,但您只能通过他们的数字ID来指代HOST用户。阅读那篇有用的文章,了解更多详细信息和更全面的解释。