Docker我們都瞭解,但是Docker爲什麼這麼火爆在現在的互聯網技術裏面?
Docker 能解決的問題
環境問題
在進行開發的時候,我們一般都是開發環境,測試環境,正式環境,三套環境。
爲了保證正式環境的正確性,防止出現錯誤,我們都會在測試環境儘量模擬真實環境。這就造成環境搭建的時候一致性的保證。
Docker就十分方便的幫助我們解決了這個問題。一次搭建,處處運行,不再擔心環境的問題。
應用搭建問題
進行開發軟件的時候,我們需要進行各種工具的搭建。
比如說需要用到Mysql數據庫,如果按照原先的搭建方式,那麼我們需要使用各種命令去交互學習才能搭建好。
對Linux不熟悉的朋友更加的不方便去搭建一個數據庫。但是有了Docker,我們通過pull run 啓動數據庫就可以了。簡單的兩個命令搞定繁瑣的操作流程和步驟。
是不是很方便?
微服務
隨着互聯網行業的興起,單體應用已經不能發揮出很好的作用。我們在開發的過程中需要對程序進行拆分,組裝成微服務架構。
Docker就是十分方便的我們去組建微服務的系統,十分快速的進入程序迭代中。
Docker厲害在於鏡像
在前幾個系列文章中,都學習了Docker的基礎命令,Docekr的Dockerfile文件。Docker的擴展工具Docker-compose. 我們在使用Docker 命令都會使用到Docker images .展示我們現在本地具有多少個鏡像
ruiqi@FRQ-PC:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo latest 052ca8f03af8 2 weeks ago 381 MB
registry latest 2e2f252f3c88 5 weeks ago 33.3 MB
ubuntu latest cd6d8154f1e1 6 weeks ago 84.1 MB
sequenceiq/spark latest 016b4fce9cd0 3 years ago 2.03 GB
Docker 鏡像究竟是什麼呢?爲什麼鏡像可以讓Docker脫穎而出?帶着這兩個疑問開始我們下面的學習
Docker 鏡像
Docker 鏡像 通俗的來說是一個特殊的文件系統。提供容器運行時的程序、庫、資源和配置之外,還能夠提供運行時準備的配置參數包含卷,環境變量等信息。
鏡像時不包含任何的數據,構建完成之後也不會被改變。這就是鏡像
特點分層存儲
鏡像包含操作系統需要的root文件系統體積很大,所以設計的時候充分利用了Union FSde 技術,設計爲分層的存儲架構。
所以Docker 鏡像是由一組組的文件系統構成的,或者是由多文件系統構成。
Docker 分層主要分爲 讀寫層,初始化層,讀層。
讀寫層
讀寫層位於最上層結構,Docker文件的操作先是在讀寫層操作,如果找不到那麼會逐步的從頂層往下層查找。
讀寫層在沒有文件寫入操作的時候,是處於空的狀態。有數據寫入的時候會按照增量的方式出現這個層級上。
刪除讀寫層文件,需要做的操作是創建一個without文件,將要刪除的文件隔離開來,相當於without文件是一堵牆,將刪除的文件遮擋住。
讀層
最底層的數據層。一般都是基礎鏡像內容處於這個機構上。
初始化層
內部層級,用來存儲hosts resolv.conf文件。
這部分需要在啓動的時候輸入一部分信息,那麼可以有讀寫的操作。但是這些修改只提供對本容器有作用,不執行commit操作。commit只提交讀寫層的信息。
最終三者層級包含的內容都會掛在到文件系統裏面,最終變現爲一個完成的操作系統供容器使用。