最近,我一直在尝试以非 root 用户身份运行我的 Docker 应用程序。我发现有几种可用的选项:
- 安装无根 Docker:显然,这是 Docker 的“非根”版本,可以以非根用户身份运行容器。
- 使用普通(rootful)Docker,但
docker run
使用--user
标志运行容器。 - 用户 Podman 运行容器。
我对这些解决方案都不熟悉,我只以 root 身份使用过 Docker。那么这些方法有什么区别和优缺点呢?
结果不是完全一样的吗,即以非root用户身份运行的容器?
答案1
它们是不同的东西。
docker run --user
设置要使用的 UID里面容器。限制在容器本身内运行的特定程序的权限很有用无根 docker 意味着
docker
以非特权用户身份运行守护进程本身。docker
无需在主机系统上授予 root 权限,即可控制自身缺陷。来自 docker 的文档:
无根模式允许以非 root 用户身份运行 Docker 守护程序和容器,以缓解守护进程和容器运行时。
podman
是 的无守护进程重新实现docker
。没有中央守护进程来运行/管理所有容器实例应该更安全、更轻量