1. 假如Docker 容器的漏洞导致Hypervisor 被攻击,则运行在Hypervisor 之上的所有的虚拟主机都会失去安全保障。
2. 假如Docker 容器出现漏洞可能会导致容器中未及时打补丁的服务遭受攻击,比较易被攻击的服务有FTP、SSH等,攻击可能会导致弱密码或者无密码的账号被盗用。
关于第一个问题, 根据我的理解,Hypervisor和Docker Engine运行在不同的层面, Hypervisor运行在Guest OS的底层,支持OS级别的虚拟化,Docker Engine主要是基于OS级别的隔离机制实现容器的隔离,层面应该在Guest OS级别,因此如果Docker Engine导致虚拟机溢出,才能所有的虚拟机存在危险。另外Docker Engine导致的OS溢出(逃逸)应该从Guest OS 核心去考虑解决。
关于第二个问题,首先根据容器的特性一般不推荐应用进程(容器主进程)的运行的同时还运行FTP,SSH之类的进程。换句话说最好的容器应该是单进程的。如果容器本身就是FTP进程另当别论。仅仅SSH的容器存在的意义不大。关于容器内容应用程序漏洞问题,其实和普通应用没啥区别,都需要及时打补丁,容器的运行因为基于镜像,目前存在很多工具能够对镜像漏洞扫描,可以提前发现问题,另外外可以通过镜像库容器镜像管理,对于存在风险的镜像镜像管理,比如不允许拉取等等。总之软件的漏洞管理对于容器应用也是需要的,容器提供了相关的技术支持,及时进行镜像安全扫描,可以避免有害镜像(或者带病镜像)运行。