docker學習——什麼是image、container、service、swarm
阿新 • • 發佈:2018-12-10
前言
docker真的是個大坑.............,看了這麼久文件,忽然發現自己連這四個概念都不清楚..........
Image
docker文件給出的定義如下:
image大致是這麼一個東西:
- 是一個虛擬檔案系統,在執行時與宿主機的核心共同構成linux的虛擬環境,所以在進入到容器後,會發現裡面有linux的檔案結構
- 定義了容器執行時需要執行的命令,這部分大概指的是Dockerfile中的cmd以及entrypoint構建指令指令,指的是我們想在linux虛擬環境上執行什麼程式
我的理解是image其實就是一個模板,裡面定義了linux的檔案系統,同時指定了希望在linux虛擬環境上執行的程式
Containers
docker文件給出的定義如下:
container大致是這麼一個東西:
- 執行image後對應的例項
container由以下幾個部分組成
- 一個Docker映象
- 根據docker映象以及核心形成的linux可執行環境(這是我自己的理解)
我的理解是container其實就是一個linux虛擬環境,這個虛擬環境是根據image這個模板構建出來的,如果把image比成設計圖紙,那麼container就是設計圖紙的具體實現
Service
docker文件中的定義:
在docker的getstart文件中是這麼介紹service的
這裡有點亂,我舉得這兩份資料表達的意思差不多,稍微理一下:
- 一個service只執行一個image
- service可以根據一個image例項化多個容器,以便讓主機分配更多的計算資源給服務程序
- service規定了映象執行的一些規則,例如應該開放哪個埠,需要把容器複製多少份以增加服務處理能力等等
如果把土地比作計算資源,容器比作別墅,那麼service就相當於一個別墅區,為了滿足更多人購買別墅的需求,別墅區會建造更多的別墅(例項化更多容器),此時佔用的土地也就越多(佔用的計算資源),別墅區當然也會有自己的一套管理方法(規定映象執行的一些規則),例如建造多少個出口(暴露多少個埠給外界)
swarm
docker文件的定義:
其實就是多個執行docker的主機聚集在一起形成一個叢集,使用Swarm操作叢集,會使使用者感覺就像是在一臺主機上進行操作,這個比較好理解,就不打比方了
如有錯誤,歡迎指出