为了安全起见,将可公开访问的应用程序作为Docker容器运行是否有用?

Docker有很多用例,它们都与可移植性,testing,可用性有关,这对于大型企业应用程序尤其有用。

考虑到互联网上的一台Linux服务器,它充当邮件networking和应用服务器 – 主要是为了私人使用。 没有集群,不需要迁移服务,没有类似的服务,可以从同一个图像创build。

考虑将每个提供的服务包装在Docker容器中是否有用,而不是在考虑整个服务器的安全性时直接在服务器上运行它们(在chroot环境中),还是使用大锤来破解坚果?

据我所知,安全性真的会增加,因为服务真的是孤立的,甚至获得root权限也不能逃脱chroot,但是维护需求会增加,因为我需要维护几个独立的操作系统(安全更新,日志分析,…)。

您会提出什么build议,以及您在小型环境中使用Docker的经验?

从我的安全angular度来看,Linux容器和Docker是其中的一个优势。 但要获得一个安全的环境还有一个很长的路要走,并且完全隔离在一个容器内。 Docker和RedHat等其他一些大合作伙伴已经在保护容器方面做出了很多努力和兴趣,Docker中的任何公共安全标志(关于隔离)都已经修复。 今天,Docker并不是隔离硬件虚拟化的替代品,但是有些项目在运行容器的虚拟机pipe理程序中工作,这将有助于这方面的工作。 这个问题与提供IAAS或PAAS的公司更为相关,他们使用虚拟化来隔离每个客户。

在我看来,对于你提出的一个案例,在Docker容器中运行每个服务在你的安全scheme中提供了更多的层次。 如果其中一个服务受到攻击,则会有一个额外的锁来访问所有服务器和其他服务。 也许维护的服务增加了一点,但是如果你组织你的Dockerfiles来使用一个普通的Docker镜像作为基础,并且你(或者其他人)定期更新这个基本镜像,你不需要更新所有的Docker容器一个。 而且,如果您使用的是定期更新的基本映像(即:Ubuntu,CentOS),那么影响这些映像的安全问题将会得到更新,并且只需重新生成并重新启动容器即可进行更新。 也许是一个额外的工作,但如果安全是一个优先事项,Docker可能是一个附加值。