我在使用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
的特定用户?
答案 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用户。阅读那篇有用的文章,了解更多详细信息和更全面的解释。