目录
[1.Namespace 机制](#1.Namespace 机制)
[2.Capabilities 机制](#2.Capabilities 机制)
[3.CGroups 机制](#3.CGroups 机制)
一、Docker服务安全
1.Namespace 机制
Namespace 是 Linux 提供的一种标签机制,Linux 内核会对不同 Namespace 之间的进程做隔离,避免不同的进程之间互相产生影响。所以,Docker 服务会为每一个 Docker 容器创建一个单独的 Namespace 空间。 这样一来,不同容器之间、容器和系统之间,都是不同的 Namespace,也就实现了隔离。
2.Capabilities 机制
Capabilities 提供了更细粒度的授权机制,它定义了主体能够进行的某一类操作。比如,一个 Web 服务需要绑定 80 端口,但 80 端口的绑定是需要 ROOT 权限的。为了防止 ROOT 权限滥用,Docker 会通过 Capabilities,给予这个 Web 服务 net_bind_service 这个权限(允许绑定到小于 1024 的端口)。
3.CGroups 机制
当一个宿主机中运行了多个 Docker 容器的时候,我们可以通过 CGroups,给每一个容器弹性地分配 CPU 资源。同样地,这个限制既不能过松,过松会导致某一个 Docker 容器耗尽宿主机资源,也不能过严,过严会使得容器内的服务得不到足够的资源支持。
二、总结
在 Docker 服务中,主要是利用 Namespace、Capabilities 和 CGroups 机制,来对 Docker 容器进行各种隔离和限制;在 Docker 守护进程中,我们通过给远程 API 加上认证功能来保证安全性;在 Docker 镜像中,我们主要是通过最小镜像和最小权限的原则,去提升镜像本身的安全性。
在实际对 Docker 进行安全防护的过程中,我们也可以采取各类针对 Docker 的扫描工具,来发现问题。比如Clair,它会对你的镜像进行静态的扫描分析,并和漏洞库进行比对,从而发现镜像中可能存在的安全漏洞。

