我只是在看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 start
或docker run
运行的正在运行的容器仍然以< EM> not_root ?或者docker exec
是否已更改活动用户?
答案 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