news 2026/3/14 20:27:51

17、Docker 安全深度剖析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
17、Docker 安全深度剖析

Docker 安全深度剖析

容器的安全性究竟如何?

容器在很多场景下能替代虚拟机,但其隔离性并不像虚拟机那么强大。容器本质上只是在 Docker 服务器上运行的进程,尽管命名空间提供了一定的隔离,但由于容器共享 Docker 服务器的内核,而内核中并非所有内容都进行了命名空间隔离,所以存在不少安全隐患。

从安全角度看,容器比直接在主机上运行的应用更安全,因为 cgroups(若使用)和命名空间能对主机核心资源进行一定隔离。但不能将容器视为良好安全实践的替代品。如果应用在非容器环境中以非特权用户运行,那么在容器内也应如此。可以让 Docker 以非特权用户身份运行整个容器,在生产环境中,这是个不错的选择,尽管目前无法强制 Docker 以非特权用户启动所有容器,但手动这样做,或在运行的应用中尽快降低权限是很有必要的。

UID 0 带来的安全风险

容器中最主要的安全风险之一是,容器内的 root 用户实际上就是系统的 root 用户。虽然命名空间能将容器内的 root 用户与 /proc 和 /sys 文件系统中最危险的部分隔离开,但总体而言仍具有 root 访问权限。如果能访问命名空间外的资源,内核会将其视为 root。Docker 默认以 root 身份启动容器内的所有服务,因此需要像在 Linux 系统中一样管理应用的权限。

以下是一个示例,使用公共 Ubuntu 镜像启动容器并获取 bash shell,查看可访问的内容:

$ sudo docker run -t -i ubuntu /bin/bash root@808a2b8426d1:/# lsmod
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!