当前位置: 首页 > 编程笔记 >

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

柳志专
2023-03-14
本文向大家介绍以非root用户身份运行Docker容器,包括了以非root用户身份运行Docker容器的使用技巧和注意事项,需要的朋友参考一下

当您在Docker容器中运行应用程序时,默认情况下,它有权访问所有root特权。您可能已经注意到,当打开Ubuntu Docker Container Bash时,默认情况下您以root用户身份登录。在应用程序的安全性方面,这可能是一个主要问题。任何局外人都可以滥用此功能,并入侵整个Container以及在Docker Container中运行的所有其他文件和应用程序。因此,尽可能以非root用户身份执行大多数琐碎操作变得非常重要。

在本文中,我们将讨论两种以非根用户身份访问Docker容器的方法。

  •  将用户添加到Docker组

您可以尝试通过将用户添加到Docker组来以非根用户身份运行Docker容器。如果没有Docker组,则始终可以创建一个。

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

sudo groupadd docker

如果您的本地计算机上已经有一个Docker组,则以下命令的输出将是-

groupadd: group 'docker' already exists

创建Docker组后,现在可以使用以下命令添加“非根用户”。

sudo usermod −aG docker [non−root user]

要验证组成员身份,您需要重新登录到Docker。

  • 使用Dockerfile

使用非根用户访问Docker容器的另一种更简单的解决方案是在Dockerfile中指定指令。Docker允许您使用-u标志以及useradd命令添加用户,然后使用USER指令,您可以在启动Docker容器时决定要登录的用户。

查看下面的Dockerfile。

#Pull the base image as Ubuntu
FROM ubuntu:latest

#Add a user with userid 8877 and name nonroot
RUN useradd −u 8877 nonroot

#Run Container as nonroot
USER nonroot

在上面的Dockerfile中,Ubuntu是从Docker注册表中提取的基本Docker映像。useradd命令和-u标志一起使用Docker RUN指令添加具有指定名称和ID的用户。USER指令用于指定在运行与映像关联的Docker容器时要登录的用户。

要使用上述Dockerfile构建Docker映像,可以使用以下Docker Build命令。

sudo docker build −t my−image .

运行与Docker映像关联的Docker容器。

sudo docker run −it my−image bash

这将打开ubuntu容器的重击。要验证您是否以非root用户身份登录,可以使用id命令。

id

您会发现Docker容器的用户和组现在更改为您在Dockerfile中指定的非根用户。

多数Docker用户会忘记或发现没有必要更改其用户特权并切换为非根用户。这是一种不良做法,并且在部署和公开应用程序时始终会构成威胁。黑客不仅威胁到该特定应用程序,而且还威胁到该应用程序,它可以操纵该应用程序在其中运行的Docker容器的整个文件系统,以及可能部署在同一Docker容器中的其他重要应用程序。

在本文中,我们看到了两种不同的方法,您可以通过这些方法将当前用户切换为非root用户。由于几乎所有Docker应用程序都需要一个Dockerfile来维护Container,并且使用两个简单的附加语句,您可以进行切换,因此方法2中讨论的过程更好并且得到了广泛使用。

 类似资料:
  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j

  • 问题内容: 运行时默认 要么 您以root用户身份连接到终端,但是我想以其他用户身份连接。这可能吗? 问题答案: 对于: 在启动Docker容器时,只需添加选项即可更改为其他用户。 对于或: 由于该命令用于附加/执行到现有进程中,因此它直接在此使用当前用户。 如果您确实想附加到想要拥有的用户,那么 从该用户开始或在您的使用中提及它 使用`su更改用户

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 问题内容: 在构建Docker映像时,如何将文件添加到映像中,以便生成的文件由root以外的用户拥有? 问题答案: 对于v17.09.0-ce及更高版本 将可选标志与或命令一起使用。 例如 --chown标志的文档现在位于Dockerfile参考主页面上。 版本 34263 已被合并,可以在v17.09.0-ce版本中使用。 对于v17.09.0-ce之前的版本 Docker不以root用户身份支

  • 问题内容: Docker 博客文章指出: 默认情况下,Docker容器是相当安全的。特别是如果您要以非特权用户(即非root用户)的身份在容器内运行进程。” 那么,如果我以root用户身份在docker下运行,安全问题是什么?我的意思是,如果我以非特权用户身份处理我的进程,这是非常安全的,那么,以root用户身份托管在容器中怎么会对我有害?我只是想让它理解它,如果以root身份运行时它不安全,那么