[ Docker ] Docker image principles and core architecture

這是我參與8月更文挑戰的第9天,活動詳情查看:8月更文挑戰web

image.png

微信公衆號搜索 程序媛小莊 人生苦短 一塊兒學Pythondocker

前言

前面的文章中介紹了docker鏡像和容器的基本操做,可能會有小夥伴有疑問,docker時一個輕量級的,那爲啥有些鏡像特別的大呢?就須要瞭解docker鏡像的分層原理。在使用docker pull的命令時,會首先在本地倉庫中尋找,找不到纔去遠程倉庫中下載,可是能夠發先在下載過程當中並非只下載一個鏡像 。微信

image-20210809095359604

鏡像分層原理

首先看一下鏡像的比較官方的定義,鏡像是一種輕量級的可獨立的軟件包,用來打包軟件運行環境和基於運行環境開發的軟件,它包含某個軟件所需的全部內容,包括代碼、運行時所須要的庫、環境變量和配置文件。markdown

容器是屬於操做系統級別的隔離,容器是鏡像運行獲得的,若是按照這種思路構建鏡像的話,每一個鏡像都須要本身封裝一個基礎的操做系統依賴,以下圖所示,就會致使每一個鏡像都很是的大,很是佔用系統資源。架構

image-20210809100611791

所以docker將鏡像儘量的將鏡像的公共部分單獨抽取出來進行分層,而且儘量的劃分的更加細緻,最底層的就是最公共的那一部分鏡像。上圖就能夠簡單轉換爲下面這樣:固然在操做系統層面上可能還會進一步分層。post

image-20210809100936288

因此總結來講一個鏡像很是大的緣由就是一個鏡像不單單是原來的軟件包,還包含軟件包所須要的操做系統依賴、團建自身以來以及自身軟件包組成。學習

docker在設計鏡像時每個鏡像都是由N個鏡像進行組成的,這樣會最大程度的複用基礎的重複的鏡像,從而減小倉庫的總體體積。這也是鏡像分層原理,這種原理也叫UnionFs聯合文件系統。spa

docker核心架構

在瞭解了鏡像和容器的相關操做以後,能夠總結出docker的核心架構圖,該核心架構能夠幫助咱們更加清楚的對docker進行學習。(dockerfile在後面的文章中會介紹,歡迎你們關注哦)操作系統

image-20210809102354422

結語

文章首發於微信公衆號程序媛小莊,同步於掘金設計

碼字不易,轉載請說明出處,走過路過的小夥伴們伸出可愛的小指頭點個贊再走吧(╹▽╹)

相關文章
相關標籤/搜索