Docker自2013年以來一直備受矚目,一款開源軟件能否得到廣泛應用一般取決于活躍的社區,成功的USER CASE,長期維護還有大量的用戶。Docker核心技術就是利用LXC來實現類似VM的功能,這樣我們就可以利用更加節省的硬件資源來提供給更多用戶,讓他們獲得更多的計算資源。LXC與VM不同的是它并不是一套硬件虛擬化的方法,而是無法歸屬到部分虛擬化,全虛擬化和半虛擬化中的任意一個,Docker也是一個操作系統級虛擬化方法,下面我們就來分析一下Docker底層技術和Docker容器技術。

我們可以通過Docker要解決什么問題出發,看看Docker是怎樣實現用戶虛擬化需求的。Docker容器的內核版本與宿主機的內核版本是一致的,而容器的主機名卻是獨立的,容器主機名缺省使用容器的ID。通過運行ps -ef命令,可以發現容器進程是隔離的,在容器內部是無法看到宿主機的進程,容器擁有自己的PID為1的進程;容器的網絡也是隔離的,容器擁有獨立的IP。容器的文件系統也是隔離的,容器擁有自己的系統和文件目錄,在容器內修改文件并不能影響宿主機上對應目錄的文件。
Docker容器技術已經發展了好些年,在很多項目都有應用,線上運行也很穩定。整理了部分Docker的學習筆記以及新版本特性,希望可以幫助到大家。
1、容器&Docker&虛擬機
Container(容器)是一種輕量級虛擬技術,無需模擬硬件即可創建虛擬機。使用Linuxkernel的cgroups,namespace(ipc,network,user,pid,mount)、capability等技術來隔離運行環境和資源限制,在Linux系統中被稱為容器。容器技術早就出現了。舉例來說,SolarisZones和BSDjails都是Linux操作系統的容器,Linux中使用的容器技術很多,比如Linux-Vserver、OpenVZ和FreVPS。盡管技術已經成熟,但是這些解決方案還沒有把它們的容器集成到主流的Linux核心。總體來說,容器并不等于文檔。
該項目由一個Linux內核補丁和一些userspace工具組成,它提供了一體化工具來維護容器,用于虛擬環境的環境隔離,資源限制和權限控制。雖然LXC與chroot有點相似,但它比chroot提供了更多的隔離。
Docker最初的目標是建立一個特殊的LXC開源系統,最后逐漸演變成自己的容器運行環境。Docker基于Linuxkernel的CGroups、Namespace、UnionFileSystem等技術包裝成一個定制的容器格式,用于提供一整套虛擬運行環境。毫無疑問,近年來,Docker已經成為容器技術的代名詞,比如官網介紹的Dockerisworld'sleadingsoftwarecontainplatform。這篇文章將首先介紹Docker的基本概念,然后分析Docker背后使用的技術。
2、虛擬機和容器的比較
2.1DockerEngine
Docker提供了安裝和運行應用程序的隔離環境,稱為容器。Docker的隔離和安全特性允許您在一臺主機上同時運行多個容器,并且它不像虛擬機那樣重量級。容器基于宿主機的核心運行。它很輕。無論您運行的是ubuntu、debian還是其他Linux系統,使用的核心都是宿主機的核心。Docker提供工具和平臺來管理容器,DockerEngine是提供大部分功能組件的CS架構應用程序,如架構圖所示,DockerEngine負責管理鏡像、容器、網絡和數據卷。
dockerengine
2.2Docker結構。
Dockerocker更詳細的架構,采用了CS架構,client通過RESTFULAPI將docker命令發送到dockerdaemon過程,dockerdaemon過程進行鏡像編譯,容器啟動、分發、數據卷管理等,一個client可以與多個dockerdaemon通信。
2.3docker架構
DockerDaemon:Docker背景過程用于管理鏡像、容器和數據卷。
DockerClient:用于與DockerDaemon交互。
DockerRegistry:用來存儲Docker鏡像,類似github,公共Registry包括DockerHub和DockerCloud。
鏡像是一種用來創建容器的只讀模板。鏡像通常是基于一個基本鏡像,并在此基礎上安裝額外的軟件。例如,您的nginx鏡像可以基于debian,然后安裝nginx并添加配置,您可以從DockerHub上拉取現有鏡像,或者您可以通過Dockerfile編譯一個鏡像。
Containers:容器是鏡像運行的例子,可以通過Dockerclient和API制作、啟動或刪除容器。默認情況下,容器與宿主機和其他容器隔離,當然可以控制隔離容器的網絡和存儲方式。
Services:服務是dockerswarm引入的概念,可用于多個主機之間的伸縮容器數量,支持負載平衡服務路由功能。
以上我們為大家分享了Docker底層技術還有Docker容器技術的應用方向,希望能夠對您有一定的幫助。如果您想了解更多相關信息,請您繼續關注中培偉業。