2016-06-24 19 views
1

におけるユーザーの変更私はちょうどDocker linode/lamp container documentationを見て、そして次の警告が発生しました:ドッカー:端末プロンプト

sudo docker run -p 80:80 -t -i linode/lamp /bin/bash注意:このコマンドは、新しいコンテナ内のrootユーザーに端末プロンプトを変更します。

私はこのコンテナ(ボリュームからロードされdocker runを介して実行される)、いくつかのPythonコードを実行すると、それはnot_rootユーザとして実行されます、私は、次のDockerfile

FROM alpine:3.3 

RUN apk --update add \ 
     build-base python-dev \ 
     ca-certificates python &&\ 
    adduser -D -u 1001 not_root 

USER not_root 

CMD ["/bin/sh"] 

を有していると仮定します。

しかし、私はその後、手動でパッケージをインストールするためにdocker exec -it -u root that_container /bin/shを行い、テスト目的のために言うことができますとき、実行中のコンテナはまだ not_root として実行docker startまたはdocker runを始めていますか?またはdocker execがアクティブユーザーを変更しましたか?

答えて

3

いいえ、docker execはコンテナで実行されている既存のプロセスは変更されませんやって。

bash$ docker run -u 1000 -d --name=top busybox top 
fba16b1460ed53673002e81d8592f63dd1df1f90809b7046671b453bb59b1668 

bash$ docker ps -a 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
fba16b1460ed  busybox    "top"     5 seconds ago  Up 2 seconds         top 

bash$ docker exec -u root -it top /bin/sh 
/# ps -a 
PID USER  TIME COMMAND 
    1 1000  0:00 top 
    7 root  0:00 /bin/sh 
    13 root  0:00 ps -a