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

时间:2016-06-24 18:10:02

标签: linux security docker

我只是在看Docker linode/lamp container documentation,并遇到以下警告:

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执行)时,它将作为 not_root 用户执行。

但是当我稍后为了手动安装软件包而执行docker exec -it -u root that_container /bin/sh时,为了测试目的,以docker startdocker run运行的正在运行的容器仍然以< EM> not_root ?或者docker exec是否已更改活动用户?

1 个答案:

答案 0 :(得分: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