Docker 包括三個基本概念
映像檔(Image) 抽象概念
一個唯獨的模板,包含容器執行所需的檔案及執行時的參數配置,一個Image可以包含一個基本的作業系統環境。通常建構image時,會基於一個base image,透過一個個指令增加該容器所需的其他東西,過程中每個指令並不會修改base image,而是創建新的image並疊加在先前的image上,最後得到我們要的最終image。
因為image是唯獨的,建構後就不會再被改變,建構過程的每段指令結束時,就代表建立了一個新的image,之後的任何指令都只會在之後的image起作用,所以指令結束前,要把所有之後不需要的東西清除,否則會使最終image越來越笨重。
容器(Container) Image運行時的實體
Docker利用容器執行應用,環境為Image所提供,可以將容器看做一個簡易版的Linux環境,擁有root權限、程式空間、使用者空間、網路空間及應用程式。
容器運行時,會基於Image,在上面增加一個「容器儲存層」,以便儲存過程中的任何讀寫,但當容器被移除後此儲存層也會被移除。
若不想資料被移除,可使用Volume(數據卷,如同容器與宿主環境的共用資料夾)或直接綁定宿主檔案系統目錄。
集中存放同名Images的場所,每個Image有不同的標籤(tag),這些同名的image透過tag分辨彼此,舉例來說,ubuntu:latest 和 ubuntu:19.10 這兩個 images,都屬「ubuntu」這個repository,而 latest 和 19.10 為它們的 tag。
倉庫伺服器(Registry)
Registry是儲存/管理repository的服務器,如Docker官方的DockerHub、Google的Google Container Registry、Amazon的AWS Container Registry,類似Github,可以提供用戶push/pull images,也有分public repository及private repository。
CTRL+R 搜尋 「開啟或關閉Windows功能」,尋找Hyper-V並開啟(需要重新啟動)
接著下載Docker (Docker Desktop for Windows),在安裝最新版本後出現 error "Docker Desktop stopped...",尋找到有人有相同問題("Docker Desktop stopped..." message after installation [closed]),最後使用版本4.4.4解決此問題,故建議安裝版本 4.4.4。
可以在docker內的PowerShell執行指令
docker --version
docker run hello-world
確認安裝無誤