Docker:用户在terminal提示符下改变

我只是看着Docker的linode / lamp容器文档 ,遇到以下警告:

sudo docker run -p 80:80 -t -i linode/lamp /bin/bash 注意:此命令还会将terminal提示符更改为新容器中的根用户。

假设我有以下的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"] 

当我在这个容器中运行一些python代码(从一个卷加载并通过docker docker run ),它将作为not_root用户执行。

但是当我后来做一个docker exec -it -u root that_container /bin/sh为了手动安装一个软件包时,可以说为了testing的目的, docker start docker docker start或者docker docker run的运行容器是否仍然以not_root运行? 或者该docker exec是否改变了活跃的用户?

不,执行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