Docker在构建时从映像中删除root用户

时间:2018-11-21 12:20:48

标签: docker dockerfile

我有一个基于 debian

的简单 Dockerfile
FROM debian

USER 1001

我建造了

docker build -t no-root:1 .

我运行它

docker run --name test -it no-root:1

现在我有一个非root用户的shell

I have no name!@2ac786ca2265:/$

但是,我可以exec从另一个外壳通过{p>

docker exec -it --user 0 test bash

然后我得到一个 root 外壳

root@e043edec4585:/#

并运行 root 命令...

是否可以在构建时从系统中删除 root 用户,以使docker exec -it --user 0 test bash失败?

我尝试从root/etc/passwd删除/etc/group行。它没有帮助。我可以docker exec -it --user 0 test bash进入。

所以-有办法吗?

1 个答案:

答案 0 :(得分:0)

更改用户非常简单,例如下面的示例,这是我捏造另一个站点的示例。

RUN useradd -c 'Node.js user' -m -d /home/node -s /bin/bash node
RUN chown -R node.node /src
USER node
ENV HOME /home/node

我不建议尝试删除root用户。以上内容应阻止root在docker exec上使用。

另一种方法是在根用户主目录中创建一个.profile,该目录登录到另一个用户,但这只会影响运行-it {container} bash的exec的使用(又名交互式外壳)