默认情况下,Docker容器以root用户身份运行。现在,如果您正在Docker容器内运行应用程序,则可以访问所有root特权。当您在Docker Containers中大规模部署应用程序时,这构成了巨大的安全威胁。因为如果您的应用程序因某种原因被外部用户入侵,则在Containers中运行的其他应用程序也将面临巨大风险。此外,如果您的Docker容器是网络的一部分,那么整个网络都有被黑客入侵的风险。为了避免这种情况,您需要确保以非root用户身份运行Docker容器。
在本文中,我们将讨论两种不同的方式,您可以使用这些方式在Docker Containers中创建和添加非root用户。
方法1:在Dockerfile中指定
您可以使用-u选项和useradd一起添加用户。然后,您可以使用USER指令来切换用户。考虑下面的Dockerfile 。
FROM ubuntu
RUN useradd -u 1234 my-user
USER my-user
上面的Dockerfile提取Ubuntu基本映像,并创建一个ID为1234且名称为my-user的用户。然后,使用USER指令切换到新用户。
现在,要构建映像,请使用Docker Build命令。
sudo docker build -t nonroot-demo .
使用Docker Run命令运行容器。
sudo docker run -it nonroot-demo bash
您可以看到该用户已更改为我们在Dockerfile中创建的非root用户。
方法2:通过将用户添加到Docker组
要创建Docker组,可以使用以下命令。
sudo groupadd docker
如果已经有一个码头工人组,您将获得以下输出–
现在,要创建一个非root用户并将其添加到docker组,可以使用以下命令。
sudo useradd -G docker
之后,您可以使用以下命令为用户分配密码。
sudo passwd user
要更改用户的主要组,请使用此命令。
sudo usermod -aG docker
重新启动Docker服务。