评估Docker的安全性时,主要考虑三个方面:
1、由内核的命名空间和控制机组提供的容器内在安全;
2、Docker程序(特别是服务端)本身的抗攻击性;
3、内核安全性的加强机制对容器安全性的影响。可以提供细粒度的权限访问控制。既可以作用在进程上,也可以作用在文件上。
每个容器都有自己的网络栈,意味着它们不能访问其他容器的Sockets或者接口。不过,主机上进行了相应的设置,容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或者使用--links来连接2个容器时,容器就可相互通信了。
控制组是Linux容器机制的另外一个关键组件,负责实现资源的审计和限制。他提供了很多有用的特性。以及确保各个容器可以公平的分享主机的内存、CPU、磁盘IO等资源,当然,更重要的是,控制组确保了当容器内的资源使用产生压力时不会连累主机系统。尽管控制组不负责隔离容器之间相互访问、处理数据和进程,他在防止DDOS攻击方面是必不可少的。
Docker底层实现
Docker底层的核心技术包括Linux上的命名空间,控制组,Unions文件系统,容器格式。