Docker系列:真正的瞭解下鏡像這個技術

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只提交讀寫層的信息。

最終三者層級包含的內容都會掛在到文件系統裏面,最終變現爲一個完成的操作系統供容器使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章