## Linux技術最佳實踐及Docker的缺省安全
容器技術以兩種方式提升了應用程序的安全性。首先通過使用應用程序之間和應用程序與主機之間的隔離層來實現。第二,它通過限制對主機的訪問來降低主機的暴露區域來保護主機以及其上的容器。Docker容器構建在Linux的最佳實踐之上,從而提供了更強的缺省配置和未來能夠降低風險的可配置設置。
最佳實踐對于Linux系統管理員的建議包括應用最少權限原則。系統管理員長久以來都被要求使用chroot流程并且為部署的應用程序創建資源限制。Docker容器模型通過在他們自己的根(root)文件系統中運行應用程序、允許使用獨立的用戶賬號、以及更進一步地使用Linux名字空間和cgroups為程序提供沙盒來強制資源限制從而支持并強化了這些限制。這些強大的隔離機制在Linux內核中已經存在幾年了,Docker將其發揚光大并且將分布式的應用程序視為獨立、隔離的單元從而極大地簡化了相關約束的創建和管理。
Docker利用一種叫做命名空間(namespace)的Linux技術來提供隔離的工作空間,我們稱之為容器(container)。當一個容器被部署時,Docker為該特定的容器創建一套命名空間,將它與所有其他正在運行的程序隔離開。
Docker也利用了Linux的控制組。控制組(Control group或者縮寫為cgroup)是內核級的功能,它允許Docker控制每一個容器訪問的資源從而保障容器的多租戶應用。控制組使得Docker能夠共享可用的硬件資源,而且如果需要可能夠為容器設置限制和約束。一個典型的例子是對某個特定容器可用內存的總量進行限制,這樣它就不會消耗掉整個主機的資源。