1.關於容器(Container)
主機爲應用程序提供的完整的、隔離的用戶空間環境。某個容器內部的變動,不會影響其他容器。
容器技術利用 Linux Namespace、cgroups 等完成容器的隔離與資源限制。
同時,容器之間共享同一個操作系統內核。
2. 容器與虛擬化
相比容器技術,系統級虛擬化在隔離性方面更加成熟。它爲用戶提供了一個包括虛擬硬件(CPU/內存/IO 設備等)、操作系統在內的完整環境。
而容器在啓動銷燬速度、資源消耗、彈性伸縮等方面表現得極爲高效;但在隔離性與安全性方面,仍有很長的路要走。
3.關於 Docker
它提供了簡易的容器運行控制方法,便捷的鏡像存儲分發機制,以及高速發展的集羣化方案。
Docker 的出現大大降低了應用部署的難度,嚴格保證了線上環境的一致性。
Docker Daemon 是運行在主機上的 Docker 服務守護進程。它作爲 Docker 的 Server 端存在,實現了容器/鏡像相關的 API。
想要啓動 Docker 容器,必須先啓動 Docker Daemon。在我們的內部支持版本中,Docker 服務在 CentOS 7 上由 systemd 管理。
Docker Client 封裝了訪問 Docker Daemon API 的方法,並通過 socket(s) 與(同主機或不同主機的) Docker Daemon 通信。
Docker 安裝包集成了 Docker Daemon (dockerd
) 和 Docker Client (docker
)。
Docker Image,即 Docker 鏡像,類似不包含運行狀態的容器快照。鏡像內容包括應用程序及其依賴、環境變量、入口進程、端口信息等。
鏡像爲層級疊加結構(layers),並採用 Copy-on-Write 機制以節省空間。一個完整的鏡像由一層或多層組成。
LayerID 是一個唯一的 64 位哈希值,每層包含自身內容和它依賴的下一層的 layerID。
Docker Registry Docker 的鏡像存儲、分發中心。
Docker 心儀的應用類型:高可用,可伸縮,無狀態。
實際上,所有的應用都可以用 Docker 運行。即便無法利用其與集羣結合得到的彈性伸縮這個優秀特性,Docker 依舊可以在單機環境下發揮它的其他優勢:只需一次封裝,即可永久保證環境的一致性