Docker
開放源碼的軟體容器平台,將軟體打包成貨櫃/軟體的貨運服務
-
簡單說明:Docker 就像一艘大貨櫃船,它可以將各種貨物(應用程式及其相關環境)打包成一個個貨櫃(Container, 容器),並在任何支援 Docker 的港口(系統)上卸貨。這種技術可以避免港口規格不同而產生的各種問題,並且讓船長(開發者)可以專心開船送貨(應用程式本身的開發)。
-
相關話題
-
Docker 基本架構:Docker 的基本架構包括 Docker Client(客戶端)、Docker Host(主機)和 Docker Registry(倉庫註冊伺服器)。就像船長(Client, 客戶端)可以跟港口(Host, 主機)聯絡,而貨櫃(Image, 映像檔)則是用於創建 Docker 容器。
-
Docker 的三個基本元素:Image(映像檔)、Container(容器)和Repository(倉庫)。這就像我們會介紹海港的三個基本元素:貨物、貨櫃和倉庫。
-
使用指令操作 Docker:Docker 提供了一套豐富的命令行界面(CLI),就像船長可以用這些指令來讓船隻啟動、停止航行……等,或是操作起重機來裝卸貨櫃。
-
使用範例:
docker run hello-world
這個指令會運行一個名為 “hello-world” 的 Docker 容器,就像是將一個名為 “hello-world” 的貨櫃運送到目標港口。
Containers(容器)
就像是一個貨櫃
-
簡單說明:Containers可以將各種貨物(應用程式及其相關環境)打包在一起,並在任何港口(系統)上卸貨。
Containers v.s. Virtual Machines
圖片來源:Docker 基本教學(pellok, 2019)
這兩者的差異可以用不同的住房類型來解釋
Containers(容器)
容器則比較像是雅房。在雅房裡面,每個房間只有床和一些基本家具,沒有自己專用廚房和浴室設備,通常會由多個房間共用一套廚房和衛浴。每個容器都有自己的應用程式和相關環境,但作業系統等基礎設施是由所有容器共享的。這種方式可以節省資源,因為不需要為每個容器都提供一個完整的系統,但也需要確保各個容器之間的隔離,以防止互相干擾。
Virtual Machines(虛擬機)
虛擬機(VM)就像是套房。每間套房都是一個完整獨立的空間,有專屬的廚房、浴室、臥室等。每個虛擬機也都是一個完整的系統,包含了作業系統、應用程式等所有必要的元件。這樣可以每間套房(VM, 虛擬機)就可以獨立運作,互不干擾,但也需要較多的資源來維護。
Registry(倉庫註冊伺服器)
就像是一個儲存貨櫃的倉庫
-
簡單說明:每個倉庫中都有多種不同的貨櫃(映像檔),每種貨櫃都有自己的標籤(tag)。你可以使用
docker pull
指令來下載,或者使用 docker push
指令來上傳。
Registry v.s. Repository
這兩者的差異可以用書店來舉例說明
Registry(倉庫註冊伺服器)
就像是一個大型的書店連鎖品牌,例如 “誠品” 或 “蔦屋書店”。這些品牌底下有很多分店(repositories),每一家的分店的選書、庫存都不太一樣(images)。當你想要找某一本書時,你會先決定去“誠品” 或 “蔦屋書店”(選擇 registry),然後再決定去哪一間分店(選擇 repository)。
Repository(倉庫)
像是書店品牌(“誠品” 或 “蔦屋書店”)下的一間分店。每一間分店都有各種不同的選書(images)。這些書可能按照類型或作者來分類,就像 Docker images 可以按照不同的標籤(tags)來分類。