← Back to list

什麼是Docker?什麼是容器?

Docker是一個開放原始碼的開放平臺軟體

Hachibye · 2023-03-08 02:43 · 0 claps · 4.6 min read
#docker #containers #容器 #開源
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

什麼是Docker?什麼是容器?

首先,我們來看看**維基百科**怎麼說:

Docker是一個開放原始碼的開放平臺軟體,用於開發應用、交付(shipping)應用和執行應用。Docker允許使用者將基礎設施(Infrastructure)中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟體的速度。

關鍵字:開源軟體、交付、容器

好像有一丟丟沒看懂,再來看看**百度百科**怎麼說:

Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows操作系統的機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

關鍵字:應用(application)、依賴(depends)、鏡像(image)

慢慢開始形象起來了厚~ 這時候請試圖想像一個常見的場景:

「為什麼這個程式在我這裡跑得好好的!

換到你那裡就不能跑了呢?」

因為一個應用程式,它需要程式碼、運行環境、配置、依賴的服務相互搭配,比如通過java語言來開發的程式,它肯定要在運行環境內包含jdk,明明代碼就是一模模一樣樣,若突然跑不了,那肯定是環境的問題啊!

這個時候,

Docker作為交付應用(shipping)的救世主出場了!

還摸不清楚Docker與容器的輪廓? 沒關係。請再試圖想像一下「貨物運送」的場景。

pic: https://aws.amazon.com/tw/docker/

pic: https://aws.amazon.com/tw/docker/

中小型的包裹可以讓寄件者自行包裝,也可以放到郵局或宅配提供的指定箱子內,再由貨運車輛運送到收件者手上,不過大型的貨物呢?例如:油罐、車輛…等。在它們運送的過程,肯定會在移動的途中分別碰上拖吊機、航運…等。此時就有了規範這一些貨物的「貨櫃」誕生!不管你是巨無霸還是小隻鳥,只要能裝到這個「貨櫃」裡面就能運輸!

而應用程式也一樣,從開發到交付到執行,這個過程中最大的痛點,通常發生在於如何將程式碼「部屬」到你的伺服器上,你可能面臨到伺服器的硬體型號不同,韌體版本不同、上面裝載的作業系統不同,或者其他任何與開發環境相異的狀況。如今能夠克服這一點,才會把Docker稱作是救世主啦!

在認識了Docker扮演的角色之後, 再來就需要認識一下它是怎麼扮演好這個角色的呢?

簡單說明容器化,就是將應用程式,封裝到名為容器的標準化單位,其中包含程式庫、系統工具、程式碼等,涵蓋所有要執行這個應用程式所需的內容。

此時讓我們再回頭看一看**維基百科**寫的第二段文字:

Docker容器與虛擬機器類似,但二者在原理上不同。容器是將作業系統層虛擬化,虛擬機器則是虛擬化硬體,因此容器更具有可攜式性、更能高效地利用伺服器。 容器更多的用於表示軟體的一個標準化單元。由於容器的標準化,因此它可以無視基礎設施(Infrastructure)的差異,部署到任何一個地方。另外,Docker也為容器提供更強的業界的隔離相容。

Pic: https://www.oracle.com/tw/cloud/compute/virtual-machines/what-is-virtual-machine/

Pic: https://www.oracle.com/tw/cloud/compute/virtual-machines/what-is-virtual-machine/

左:虛擬機(virtual machine) 在基礎建設(infrastucture)/硬體設備上有宿主作業系統(Host OS) 採用一個虛擬機管理程式(hypervisor)來作為模擬和溝通 底下的應用程式需要分別再安裝有Guest OS

右:容器(containers) 在基礎建設(infrastucture)/硬體設備上有作業系統(OS) 以Docker Engine來執行底下的容器化應用程式 底下的應用程式共用主機上的OS,不需要再額外安裝有OS *容器(containers)的運作原理是在Image上運行整個應用程序所需的資源

比較兩者的差異之後可以發現,Docker是建立在伺服器的OS上,而傳統的虛擬機需要在每一台虛擬機上額外安裝Guest OS,而每次運行Guest OS當然也需要耗費硬體資源以及執行時間,因此Docker的容器化概念改善了這一點。

在認識Docker和容器之後,就要開始來學習Docker具備有的概念,例如:Image、Container、Registry等,這個就留到下一篇學習筆記之後繼續深入探討吧!

推薦閱讀: 10個Q&A快速認識Docker: https://www.ithome.com.tw/news/91847 Docker — — 從入門到實踐: https://philipzheng.gitbook.io/docker_practice/introduction/what

衍伸閱讀: 什麼是虛擬機器 (VM)?: https://azure.microsoft.com/zh-tw/resources/cloud-computing-dictionary/what-is-a-virtual-machine 什麼是虛擬機器 (VM)? https://www.oracle.com/tw/cloud/compute/virtual-machines/what-is-virtual-machine/


메타데이터
post_id
4ab9fdbdf429
slug
什麼是docker-什麼是容器-4ab9fdbdf429
url
https://medium.com/@hachibye/%E4%BB%80%E9%BA%BC%E6%98%AFdocker-%E4%BB%80%E9%BA%BC%E6%98%AF%E5%AE%B9%E5%99%A8-4ab9fdbdf429
canonical_url
https://medium.com/@hachibye/%E4%BB%80%E9%BA%BC%E6%98%AFdocker-%E4%BB%80%E9%BA%BC%E6%98%AF%E5%AE%B9%E5%99%A8-4ab9fdbdf429
author_url
https://medium.com/@hachibye
status
ok
fetched_at
2026-07-26 01:30:15