📜  非 docker root (1)

📅  最后修改于: 2023-12-03 14:58:43.984000             🧑  作者: Mango

非 Docker Root

概述

Docker是一个常见的容器化平台,可以让你将应用程序和其所需的环境打包到一个可移植的容器中。然而,Docker默认情况下会使用root用户来运行所有的容器,这可能会导致安全漏洞和其他问题。因此,建议使用非Docker Root用户来运行容器。

使用非Docker Root用户
  1. 创建新用户

首先你需要在主机上创建一个新的非root用户,可以使用以下命令创建:

sudo useradd -r -s /bin/false myuser

其中,-r选项表示创建的用户是系统用户,-s /bin/false选项表示用户不能登录,只能作为服务账户来使用。替换myuser为你要创建的用户名。

  1. 更改Docker配置文件

编辑Docker服务配置文件/etc/docker/daemon.json并添加以下内容:

{
  "userns-remap": "myuser"
}

其中myuser为你在第一步中创建的非root用户。

  1. 重新启动Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 测试

运行以下命令测试是否使用了非root用户:

docker run --rm --name test -it alpine id

正常情况下,你将看到输出类似于以下内容:

uid=987(myuser) gid=987(myuser) groups=987(myuser)
注意事项
  • 如果你使用了Swarm模式,则需要在创建节点时指定用户映射。
  • 某些镜像和应用程序可能需要在容器内运行为root用户,因此在这种情况下你不能使用非root用户。