容器是一種輕量級操做系統層面的虛擬機,它爲應用軟件及其依賴組件提供了一個資源獨立的運行環境。應用軟件所依賴的組件會被打包成一個可重用的鏡像,鏡像運行環境並不會與主操做系統共享內存、CPU和硬盤空間,由此也保證了容器內部的進程與容器外部進程的獨立關係。java
對於開發人員,須要引入複雜的代碼解決事務以及狀態管理問題,處理多線程、資源的調度等底層細節,不少業務邏輯能夠封裝在可重用的組件當中去,此外,Java EE爲每一種組件都提供了基於容器的底層服務。容器就是組件和底層服務細節之間的接口。使用java ee能夠在容器的幫助下,解放雙手去專一於解決其餘問題。web
Java EE Server and Containers:docker
Java EE server:Java EE產品運行中的一部分,Java EE server 提供EJB和web容器小程序
EJB container:管理企業beans和Java EE應用的執行,企業beans和Java EE容器在Java EE server上運行瀏覽器
Web container:管理web頁面、小程序和一些Java EE程序的EJB組件的執行,web容器及其組件運行在Java EE Server上安全
Application client container:管理應用客戶端組件的執行,應用程序客戶端和它們的組件運行在客戶端上多線程
Applet container:管理小程序的執行,由一個Web瀏覽器和一個Java插件組成,一塊兒運行在客戶機上網站
Java EE的上下文和依賴注入定義了一組相關服務,由Java EE容器支持,方便開發人員在Web應用程序上使用企業Beans和Java Server Faces技術。spa
當前,docker幾乎是容器的代名詞,不少人覺得docker就是容器。其實,這是錯誤的認識,除了docker 還有coreos。因此,容器世界裏並非只有docker一家。既然不是一家就很容易出現分歧。任何技術出現都須要一個標準來規範它,否則各搞各的很容易致使技術實現的碎片化,出現大量的衝突和冗餘。所以,在2015年,由Google,Docker、CoreOS、IBM、微軟、紅帽等廠商聯合發起的OCI(Open Container Initiative)組織成立了,並於2016年4月推出了第一個開放容器標準。標準主要包括runtime運行時標準和image鏡像標準。標準的推出,有助於替成長中市場帶來穩定性,讓企業能放心採用容器技術,用戶在打包、部署應用程序後,能夠自由選擇不一樣的容器Runtime;同時,鏡像打包、創建、認證、部署、命名也都能按照統一的規範來作。操作系統
兩種標準主要包含如下內容:
a). creating:使用 create 命令建立容器,這個過程稱爲建立中
b). created:容器建立出來,可是尚未運行,表示鏡像和配置沒有錯誤,容器可以運行在當前平臺
c). running:容器的運行狀態,裏面的進程處於 up 狀態,正在執行用戶設定的任務
d). stopped:容器運行完成,或者運行出錯,或者 stop 命令以後,容器處於暫停狀態。這個狀態,容器還有不少信息保存在平臺中,並無徹底被刪除
2.容器鏡像標準(image spec)
a). 文件系統:以 layer 保存的文件系統,每一個 layer 保存了和上層之間變化的部分,layer 應該保存哪些文件,怎麼表示增長、修改和刪除的文件等;
b). config 文件:保存了文件系統的層級信息(每一個層級的 hash 值,以及歷史信息),以及容器運行時須要的一些信息(好比環境變量、工做目錄、命令參數、mount 列表),指定了鏡像在某個特定平臺和系統的配置。比較接近咱們使用 docker inspect。
容器技術主要能夠分爲容器運行技術和容器編排技術。其中:容器運行技術主要包括Docker和rkt等;容器編排技術主要包括Kubernetes、Mesos和Swarm等。
歷經5年發展,Docker公司揭露了今年最新的Docker年度數據報告,從2013年3月PyCon大會上,Docker首度亮相以後,至今在Docker上的容器鏡像下載次數已經超過了370億次,容器化的應用有高達350萬個,目前在LinkedIn網站上的Docker相關職缺也有15,000個。全球活躍的Docker使用者社羣已有200多個,包括臺灣也有。全球使用企業版Docker EE的企業顧客目前則約有450家。
而過去一年,Docker功能的進展很少,主要有擁抱Kubernetes,在Docker產品中能夠和Swarm並用。其次最重要的新功能是增長了RBAC角色存取控管機制,這也是企業最想要的安全機制。
javava EE CDI主要使用@Inject批註,以便將託管bean的依賴注入執行到其餘容器託管資源。使用依賴注入的思想是應用程序用到Foo類,Foo類須要Bar類,Bar類須要Bim類,那麼先建立Bim類,再建立Bar類並把Bim注入,再建立Foo類,並把Bar類注入,再調用Foo方法,Foo調用Bar方法,接着作些其它工做。