1. 程式人生 > 實用技巧 >Docker 容器入門

Docker 容器入門

1.1 容器簡介
1.1.1 什麼是 Linux 容器
Linux容器是與系統其他部分隔離開的一系列程序,從另一個映象執行,並由該映象提供支援程序所需的全部檔案。容器提供的映象包含了應用的所有依賴項,因而在從開發到測試再到生產的整個過程中,它都具有可移植性和一致性。

更加詳細地來說,請您假定您在開發一個應用。您使用的是一臺膝上型電腦,而且您的開發環境具有特定的配置。其他開發人員身處的環境配置可能稍有不同。您正在開發的應用依賴於您當前的配置,還要依賴於某些特定檔案。與此同時,您的企業還擁有標準化的測試和生產環境,且具有自身的配置和一系列支援檔案。您希望儘可能多在本地模擬這些環境,而不產生重新建立伺服器環境的開銷。

因此,您要如何確保應用能夠在這些環境中執行和通過質量檢測,並且在部署過程中不出現令人頭疼的問題,也無需重新編寫程式碼和進行故障修復?答案就是使用容器。容器可以確保您的應用擁有必需的配置和檔案,使得這些應用能夠在從開發到測試、再到生產的整個流程中順利執行,而不出現任何不良問題。這樣可以避免危機,做到皆大歡喜。

雖然這只是簡化的示例,但在需要很高的可移植性、可配置性和隔離的情況下,我們可以利用 Linux 容器通過很多方式解決難題。無論基礎架構是在企業內部還是在雲端,或者混合使用兩者,容器都能滿足您的需求。

1.1.2 容器不就是虛擬化嗎
是,但也不竟然。我們用一種簡單方式來思考一下:

虛擬化使得許多作業系統可同時在單個系統上執行。

容器則可共享同一個作業系統核心,將應用程序與系統其他部分隔離開。

圖 - 普通虛擬化技術和Docker的對比

這意味著什麼?首先,讓多個作業系統在單個虛擬機器監控程式上執行以實現虛擬化,並不能達成和使用容器同等的輕量級效果。事實上,在僅擁有容量有限的有限資源時,您需要能夠可以進行密集部署的輕量級應用。Linux 容器可從單個作業系統執行,在所有容器中共享該作業系統,因此應用和服務能夠保持輕量級,並行快速執行。

1.1.3 容器發展簡史

我們現在稱為容器技術的概念最初出現在 2000 年,當時稱為 FreeBSD jail,這種技術可將 FreeBSD 系統分割槽為多個子系統(也稱為 Jail)。Jail 是作為安全環境而開發的,系統管理員可與企業內部或外部的多個使用者共享這些 Jail。

Jail 的目的是讓程序在經過修改的 chroot 環境中建立,而不會脫離和影響整個系統 — 在 chroot 環境中,對檔案系統、網路和使用者的訪問都實現了虛擬化。儘管 Jail 在實施方面存在侷限性,但最終人們找到了脫離這種隔離環境的方法。

但這個概念非常有吸引力。

2001 年,通過 Jacques Gélinas 的 VServer 專案,隔離環境的實施進入了 Linux 領域。正如 Gélinas 所說,這項工作的目的是“在高度獨立且安全的單一環境中執行多個通用 Linux 伺服器 [sic]。” 在完成了這項針對 Linux 中多個受控制使用者空間的基礎性工作後,Linux 容器開始逐漸成形並最終發展成了現在的模樣。

1.2 什麼是 Docker?
“Docker” 一詞指代多種事物,包括開源社群專案、開源專案使用的工具、主導支援此類專案的公司 Docker Inc. 以及該公司官方支援的工具。技術產品和公司使用同一名稱,的確讓人有點困惑。

我們來簡單說明一下: