在容器领域有两个主要流派:共享内核和独享内核。其中Docker就是共享内核的代码,一个宿主上面的docker容器共享同一个内核。通过namespace、cgroup隔离每个容器的,这样做的优点是资源开销少,启动速度快。但缺点也非常明显,安全隔离差:一方面如果容器逃逸,可以干掉整个宿主机;另一方面namespace只支持UTS、Network、User、Cgroup、IPC、PID、Time(5.6内核新增)这几种,也就是除了上面的隔离以外,其他的都没有隔离,可以说隔离的不够彻底。
虽然pid namespace可以隔离进程ID,但这个只是一个障眼法,容器进程还是可以在宿主机上面通过ps命令直接看到,并且和宿主机上的其它进程共享资源。
另一种方案是独立内核,典型就是kata。kata是通过启动一个轻量虚拟机,然后在虚拟机里面启动容器,通过虚拟机保障沙箱的隔离性。但这种方案也有小缺点,就是需要先启动一个虚拟机,导致启动速度和资源消耗相比Docker要差一点。kata这几年也在不断改进,主要是解决启动速度和虚拟机开销问题,目前kata已经做到1.5s启动,相对docker 0.5s的启动速度已经差别不大了。
还是那句老话,没有银弹。如果是私有云部署使用docker问题不大,但如果是多租环境或者公有云中提供的容器服务,则必须是类似kata这样的安全容器。
页面更新:2024-05-12
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号