Docker 架构中 Rootless 模式怎么配置以提升容器运行安全性

风晨酱_7423

风晨酱_7423

2026-07-29

977人浏览

原创

rootless模式通过用户命名空间实现uid/gid隔离映射,使容器内root对应宿主机非特权子uid,配合dockerd-rootless.sh以普通用户运行守护进程、fuse-overlayfs与slirp4netns等用户态组件,彻底消除root依赖,显著提升安全性。

docker 架构中 rootless 模式怎么配置以提升容器运行安全性

Rootless 模式通过让 Docker 守护进程和容器均以普通用户身份运行,从根源上切断容器对宿主机 root 权限的依赖,显著提升安全性。它不是简单去掉 sudo,而是依托 Linux 用户命名空间(user namespaces)实现 UID/GID 的隔离映射,使容器内 root(uid 0)实际对应宿主机上一个无特权的子 UID(如 100000),即便容器被攻破,攻击者也无法获得系统级控制权。

关键安全机制配置

Rootless 的安全基础依赖三项底层机制协同工作:

  • 用户命名空间映射:通过 /etc/subuid 和 /etc/subgid 为用户分配独立的 UID/GID 范围(如 myuser:100000:65536),确保容器内 root 不等于宿主机 root
  • 非特权守护进程:dockerd-rootless.sh 启动的 daemon 进程完全由普通用户拥有,不涉及 setuid 或 cap_sys_admin 等高危能力
  • 隔离运行时组件:使用 fuse-overlayfs 替代内核 overlay 驱动,用 slirp4netns 实现用户态网络栈,避免直接操作内核网络或文件系统模块

基础环境准备要点

配置前需确认并调整以下系统级前提:

Docker Cli
Docker Cli

使用 Docker CLI 构建、运行、停止、检查和管理容器与镜像的助手。用于执行容器相关任务。

下载
  • 内核支持用户命名空间(CONFIG_USER_NS=y),CentOS 7 需手动启用:echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf && sysctl -p
  • 安装必要工具包:uidmap(UID 映射管理)、dbus-user-session(用户级 D-Bus 通信)、fuse-overlayfs(用户态存储驱动)
  • Docker 版本 ≥ 20.10(正式支持,非实验性),建议使用 23.0+ 或 25.0+ 获取更稳定的资源限制与 seccomp 支持

标准部署流程

以新建专用用户 devuser 为例,执行以下步骤:

  • 创建用户并配置映射:sudo useradd -m -s /bin/bash devuser,然后向 /etc/subuid 和 /etc/subgid 添加对应条目
  • 切换至该用户,运行官方 rootless 安装脚本:curl -fsSL https://get.docker.com/rootless | sh
  • 设置环境变量(写入 ~/.bashrc):export XDG_RUNTIME_DIR=$HOME/.docker/run、export PATH=$HOME/bin:$PATH、export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
  • 启动服务:systemctl --user start docker(systemd 环境)或直接运行 dockerd-rootless.sh(如 CentOS 7)

安全增强补充项

Rootless 已自带权限降级,但可进一步收紧:

  • 禁用默认挂载点:在 ~/.config/systemd/user/docker.service.d/override.conf 中添加 Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS=--disable-host-ports",防止端口冲突
  • 启用默认 seccomp profile:无需额外配置,Rootless 模式下 runc 默认加载 default.json,限制 400+ 系统调用
  • 避免使用 --privileged 或 --cap-add=ALL,这些在 Rootless 下会被拒绝或静默降级,保持最小权限原则

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker docker部署

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.12

2307

5

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

665

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4679

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5597

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2113

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

219

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

411

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

380

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

285

24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习