Docker Security总结

最后编辑于 2021-04-06

本文总结了 Docker 安全性相关的内容,主要来自 Docker 官方文档 Docker security 一文。

Kernel namespaces

在运行docker run时,docker 在幕后为容器创建了一系列 namespaces 和 control groups。

这些 namespaces 首先提供了最直接的隔离:一个容器不能看到且很难影响到另一个容器或 Host 主机中进程的运行。

每个容器还拥有他们自己的网络栈(network stack):一个容器没有访问其他容器 socket 或接口的特权。当然如果有需要的话可以允许容器访问 Host 主机的特定端口,也可以让两个容器之间通过 public port 来进行网络通信。从网络架构层面来说,所有的 docker 容器都建立在 linux bridge 之上,就像现实中许多电脑连在一台交换机上一样。

Control groups

control groups(cgroups)是 linux 容器另一个重要的组成部分,它们用于资源统计和限制。cgroups 的主要作用是让容器获得应有的 CPU、I/O 等资源,而又不让某个容器将 Host 主机拖垮。

cgroups 虽然不能提供隔离容器的功能,但是在阻止容器消耗过量资源上扮演了重要的角色,例如抵挡 DDoS 攻击。

参考资料

Docker security