2016-04-08 30 views
0

我在使用docker時遇到了一個問題。 現在我有一個基於ubuntu的docker容器。在容器中,用戶標識默認爲root,這不是我的期望,我想用戶標識就像是abc,它是運行docker的HOST OS上的另一個用戶帳戶。 我曾嘗試以下方法,但都失敗:如何用root用戶以外的新用戶創建並運行docker容器?

su abc; 

然後運行docker run xxx彈出一個容器,但登陸容器,容器中的用戶仍然root

然後通過添加-u標誌泊塢窗運行:喜歡:

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

的泊塢窗顯示錯誤unable to find user abc

可有人告訴我如何解決它?

或者碼頭支持是否運行一個容器,其中的用戶是默認的root

+1

您可以以超級用戶以外的用戶身份運行,但您需要先在映像中使用Dockerfile創建用戶。另外,如果您在Dockerfile中有'USER'行,那麼當您登錄時,該用戶將成爲默認用戶。 –

回答

1

您可以在Docker鏡像中創建User。但爲此,您將不得不擴展基本形象。例如,你可以在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 

你應該看到bash提示符與用戶abc像下面,

[email protected]<container-hostname>:~$ 
相關問題