docker 容器与虚拟机的区别
-
隔离与共享
虚拟机通过添加 Hypervisor 层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。
而 Docker 容器则是通过隔离的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制,最终让容器之间相互不影响,容器无法影响宿主机。容器与宿主机共享内核、文件系统、硬件等资源 -
性能与损耗
与虚拟机相比,容器资源消耗要少。同样的宿主机下,能够建立容器的数量要比虚拟机多。但是虚拟机的安全性要比容器稍好,要从虚拟机攻破到宿主机或其他虚拟机,需要先攻破 Hypervisor 层,这是及其困难的。而 docker 容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响。
Docker 存在的安全问题
-
Docker 自身漏洞
作为一款应用 Docker 本身实现上会有代码缺陷。CVE官方记录 Docker 历史版本共有超过20项漏洞。
黑客常用的攻击手段主要有代码执行、权限提升、信息泄露、权限绕过等。目前 Docker版本更迭非常快,Docker 用户最好将 Docker 升级为最新版本。 -
Docker 源码问题
Docker 提供了 Docker hub,可以让用户上传创建的镜像,以便其他用户下载,快速搭建环境。但同时也带来了一些安全问题。例如下面三种方式- 黑客上传恶意镜像
如果有黑客在制作的镜像中植入木马、后门等恶意软件,那么环境从一开始就已经不安全了,后续更没有什么安全可言。 - 镜像使用在有漏洞的软件
Docker hub 上能下载的镜像里面,75%的镜像都安装了有漏洞的软件。所以下载镜像后,需要检查里面软件的版本信息,对应的版本是否存在漏洞,并及时更新打上补丁。 - 中间人攻击篡改镜像
镜像在传输过程中可能被篡改,目前现版本的 Docker 已经提供了相应的校验机制类预防这个问题。
- 黑客上传恶意镜像
Docker 架构缺陷与安全机制
Docker 本身的架构与机制就可能产生问题,例如这样一种攻击场景,黑客已经控制了宿主机上的一些容器,或者获得了通过在公有云上建立容器的方式,然后对宿主机或