之路 on it Road.com

方法 2 - 使用 Dockerfile(USER 指令)

Docker 提供了一个简单而强大的解决方案来将容器的权限更改为非 root 用户,从而阻止恶意 root 访问 Docker 主机。
可以使用 docker run 子命令的 -u 或者 -user 选项或者 Dockerfile 中的 USER 指令完成对非 root 用户的这种更改。

1、编辑创建非root权限用户的Dockerfile,将默认root用户修改为新创建的非root权限用户,如下图:

# Dockerfile to change from root to 
# non-root privilege# Base image is CentOS 7
FROM Centos:7
# Add a new user "john" with user id 8877
RUN useradd -u 8877 john
# Change to non-root privilege
USER john
  1. 继续使用“docker build”子命令构建 Docker 镜像,如下所示:
$ sudo docker build -t nonrootimage .
  1. 最后,让我们使用 docker run 子命令中的 id 命令验证容器的当前用户:
$ sudo docker run --rm nonrootimage id
uid=8877(john) gid=8877(john) groups=8877(john)

现在,容器的用户、组已经更改为非 root 用户。

以非 root 用户身份运行 Docker

默认情况下,Docker 容器以 root 权限运行,在容器内运行的应用程序也是如此。
从安全角度来看,这是另一个主要问题,因为黑客可以通过入侵容器内运行的应用程序来获得对 Docker 主机的 root 访问权限。

方法 1 - 将用户添加到 Docker 组

  1. 要以非 root 用户身份运行 Docker,我们必须将用户添加到 docker 组。

  2. 如果没有,则创建一个docker组:

$ sudo groupadd docker
  1. 将用户添加到 docker 组:
$ sudo usermod -aG docker [non-root user]
  1. 注销并重新登录,以便重新评估组成员身份。
日期:2020-09-17 00:16:28 来源:oir作者:oir