Docker中的非root用户
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中创建一个用户,并在以交互方式运行容器时将该用户设置为默认用户?
问题: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用户身份运行进程,提高容器的安全性。