📜  以非root用户身份运行Docker容器

📅  最后修改于: 2021-04-16 08:20:26             🧑  作者: Mango

默认情况下,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 .

在Dockerfile中指定

使用Docker Run命令运行容器。

sudo docker run -it nonroot-demo bash

非root码头工人演示

您可以看到该用户已更改为我们在Dockerfile中创建的非root用户。

方法2:通过将用户添加到Docker组

要创建Docker组,可以使用以下命令。

sudo groupadd docker

如果已经有一个码头工人组,您将获得以下输出–

将用户添加到Docker组

现在,要创建一个非root用户并将其添加到docker组,可以使用以下命令。

sudo useradd -G docker 

之后,您可以使用以下命令为用户分配密码。

sudo passwd user

分配密码

要更改用户的主要组,请使用此命令。

sudo usermod -aG docker 

重新启动Docker服务。