由於和朋友組了讀書會,開始研討關於docker的架構與使用,因此撰寫此筆記作為重點整理,並期望能幫助其他也在學習的網友們!
Introduction to Docker
Docker 是一個開源專案,提供開發、轉移和執行應用程式。Docker讓應用程式可以獨立於基礎建設中,提高交付的速度。
Docker讓基礎建設的管理更容易,就如同管理應用程式一樣。讓部署、測試程式碼更加便利。
Docker將應用程式獨立於Container當中,省去搭建作業系統的成本,使得程式運行更快速。
基於Container技術,讓建立應用程式更快速與簡單。
Container vs. VM
VM虛擬化是實作在硬體層之上,為了建立可以執行整套作業系統的sandbox
Container是實作在作業系統層之上,將應用程式所需的程式碼、函式庫、環境配置檔都打包,而建立的sandbox。
簡而言之,VM打包作業系統,Container打包應用程式。
註:Hypervisor是用來建立與管理VM的運作。
Docker Conponents
主要包含三部分:
1. Docker Image (映像檔)
唯獨的環境模板,涵蓋Container內的所有程式(包括應用程式、函式庫、環境設定檔),用來建立Docker Container
2. Docker Container (容器)
Container是根據docker image所建立的instance。image是唯獨的,而container是可寫層。每個container之間都是互相獨立的平台。
容器是一個簡易版的 Linux 環境應用程式並可在其中運行程式。
3. Docker Registry (倉庫)
Registry就像是GitHub一樣,是一個線上伺服器,儲存各式的Docker repository。Registry分成public和private,如最大的public registry—Docker Hub。
Repository是一個docker images的集合,包含所有同名不同tag的images,如library/python — Docker Hub。
Docker Architecture
Docker使用client-server architecture。組成包含Docker client、daemon與registries。
- Docker client主要是提供指令操作,透過REST API的方式與Docker daemon溝通。
- Docker daemon負責管理Docker物件,包含images、containers、網路狀況等。
- Docker registries如同上面提到,就是遠端伺服器,必要時會將image載入於本機中。
參考資料
- 《Docker — — 從入門到實踐》正體中文版
- Docker overview | Docker Documentation
- 10個Q&A快速認識Docker
- Docker介紹與入門使用
- Difference between Docker registry and repository — Stack Overflow
→ 繼續閱讀:Docker 筆記 Part 2 |指令操作