Docker中的非root用户

8 浏览
0 Comments

Docker中的非root用户

我有一个基本的Dockerfile:

FROM ubuntu:xenial
USER test
ENTRYPOINT ["/bin/bash"]

对于这个Dockerfile,我希望能够创建一个没有密码的用户,并且在运行Docker容器时,希望使用该用户,而不是root用户。当我尝试运行容器,docker run -it test:1,我得到以下错误:

docker: Error response from daemon: linux spec user: unable to find user test: no matching entries in passwd file.

如何在Dockerfile中创建一个用户,并在以交互方式运行容器时将该用户设置为默认用户?

0
0 Comments

问题:Non-root user in Docker(Docker中的非root用户)

原因:在Docker中,默认情况下,容器内的进程以root用户身份运行。然而,以root身份运行容器可能存在一些安全风险。因此,有时候我们希望在Docker容器中以非root用户身份运行进程。为了实现这一目的,我们可以在Dockerfile中添加RUN useradd -s /bin/bash user指令,将一个名为"user"的非root用户添加到容器中。

解决方法(适用于Linux):在Dockerfile中在USER指令之前添加RUN useradd -s /bin/bash user指令。这将创建一个名为"user"的非root用户,并将其设置为容器内进程的默认用户。

解决方法(适用于Windows):在Windows上,你可以按照docs.docker.com/engine/reference/builder/#user中的说明进行操作,即使用net user /add my_user命令添加一个名为"my_user"的用户。

这样,通过在Dockerfile中添加相应的指令,我们可以在Docker容器中以非root用户身份运行进程,提高容器的安全性。

0