## Linux技术最佳实践及Docker的缺省安全
容器技术以两种方式提升了应用程序的安全性。首先通过使用应用程序之间和应用程序与主机之间的隔离层来实现。第二,它通过限制对主机的访问来降低主机的暴露区域来保护主机以及其上的容器。Docker容器构建在Linux的最佳实践之上,从而提供了更强的缺省配置和未来能够降低风险的可配置设置。
最佳实践对于Linux系统管理员的建议包括应用最少权限原则。系统管理员长久以来都被要求使用chroot流程并且为部署的应用程序创建资源限制。Docker容器模型通过在他们自己的根(root)文件系统中运行应用程序、允许使用独立的用户账号、以及更进一步地使用Linux名字空间和cgroups为程序提供沙盒来强制资源限制从而支持并强化了这些限制。这些强大的隔离机制在Linux内核中已经存在几年了,Docker将其发扬光大并且将分布式的应用程序视为独立、隔离的单元从而极大地简化了相关约束的创建和管理。
Docker利用一种叫做命名空间(namespace)的Linux技术来提供隔离的工作空间,我们称之为容器(container)。当一个容器被部署时,Docker为该特定的容器创建一套命名空间,将它与所有其他正在运行的程序隔离开。
Docker也利用了Linux的控制组。控制组(Control group或者缩写为cgroup)是内核级的功能,它允许Docker控制每一个容器访问的资源从而保障容器的多租户应用。控制组使得Docker能够共享可用的硬件资源,而且如果需要可能够为容器设置限制和约束。一个典型的例子是对某个特定容器可用内存的总量进行限制,这样它就不会消耗掉整个主机的资源。