Docker簡單理解

一、虛擬機和容器的區別

背景:現在物理服務器很強大,如果我們在一臺物理服務器上只跑一個服務就浪費了,而同時跑多個服務他們又會互相影響。所以得把每個服務都隔離起來,讓他們只使用自己那部分有限的cpu,內存和磁盤,以及自己的依賴包。早起有了虛擬機,但是太佔內存,於是就有了Docker,一個機器上可以安裝十幾個到幾十個docker,他們共享操作系統核心,佔用資源少,啓動速度快。但又能提供CPU、內存、磁盤等一定程度的隔離。

虛擬機:就是在我的操作系統中裝一個軟件,然後通過這個軟件,再模擬出一臺甚至多臺的“子電腦”出來。需要模擬整臺機器包括硬件,每臺虛擬機擁有自己的操作系統。每個虛擬機與虛擬機之間的相互隔離的,互不影響。

容器:輕量的虛擬化。不需要模擬出整個操作系統,只需要虛擬一個小規模的環境。和我們宿主機共享硬件資源及操作系統。容器在宿主操作系統中,在用戶控件以分離的進程運行。

二、對Docker的理解

第一:"Build,Ship and Run"  ===》 "搭建、發送、運行"

【搭建】:我來到一片空地,想建個房子,於是我搬石頭、砍木頭、畫圖紙,一頓操作,終於把這個房子蓋好了。

問題:結果,我住了一段時間,想搬到另一片空地去。這時候,按以往的辦法,我只能再次搬石頭、砍木頭、畫圖紙、蓋房子

【發送】:跑來一個老巫婆,教會我一種魔法,可以把我蓋好的房子複製一份,做成“鏡像”,放在我的揹包裏。

【運行】:等我到了另一片空地,就用這個“鏡像”,複製一套房子,擺在那邊,拎包入住。

第二:"Build once,Run anywhere"  ==》 "搭建一次,到處能用"

相當於我蓋了別墅,生成了鏡像。另一個哥們蓋了四合院,也生成了鏡像。還有個哥們,蓋了個茅草屋,也生成了鏡像。我們可以交換鏡像。

三、Docker的三大核心概念

鏡像:相當於Linux的快照。放在包裏的鏡像就是Docker鏡像。是一個特殊的文件系統,除了提供容器運行時所需要的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(例如環境變量).鏡像不包含任何動態數據,起內容在構建之後也不會被改變。也就是說,每次變出房子,房子是一樣的,但生活用品之類的都不管,誰用誰負責添置。

倉庫:相當於git倉庫。我的揹包就是Docker倉庫。

容器:相當於虛擬機。在空地上用魔法造好房子,就是Docker容器。

四、Docker運行鏡像流程

docker pull:拉取某個鏡像(先在本地檢查我們想要拉取的版本鏡像,如果有不作操作。本地沒有就去Docker倉庫去找我們要拉取的鏡像名字,如果找到了就會由docker倉庫把我們要的鏡像傳送到本地)
docker run:把鏡像運行起來變成Docker容器(先在本地檢查鏡像在本機是否存在,不存在做一遍docker pull的操作,鏡像下載回來後運行變爲Docker容器)

五、參考文檔

https://www.runoob.com/docker/macos-docker-install.html

https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html

https://www.zhihu.com/question/28300645

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