Linux Docker:终端提示中的用户更改

Linux Docker:终端提示中的用户更改,linux,security,docker,Linux,Security,Docker,我正在查看,遇到以下警告: sudo docker run-p 80:80-t-i linode/lamp/bin/bash注意:此命令还将终端提示更改为新容器中的root用户。 假设我有以下Dockerfile FROM alpine:3.3 RUN apk --update add \ build-base python-dev \ ca-certificates python &&\ adduser -D -u 1001 not_root

我正在查看,遇到以下警告:

sudo docker run-p 80:80-t-i linode/lamp/bin/bash
注意:此命令还将终端提示更改为新容器中的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"]
当我在这个容器中运行一些python代码(从卷中加载并通过
docker run
执行)时,它会作为非root用户执行


但是,当我后来做了一个
docker exec-it-u root,即_container/bin/sh
以手动安装一个包时,比如说出于测试目的,正在运行的容器是否仍然以
docker start
docker run
的形式运行?或者,
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