一文看懂什麼是 Docker 容器

想知道什麼是 Docker 容器?本文用通俗易懂的語言給您需要了解的一切。

在輕鬆打包、部署和運行分佈式應用程序方面,Docker 已成爲 IT 行業的標準。Docker 的主要優點是它允許用戶將應用程序及其所有依賴項打包到一個稱爲容器的標準化單元中。

由於 Docker 是一個容器化平臺,因此瞭解容器化背後的歷史非常重要。

容器化之前的歷史

在容器化出現之前,隔離、組織應用程序及其依賴項的主要方法是將每個應用程序放在自己的虛擬機中。這些機器在同一個物理硬件上運行多個應用程序,這個過程只不過是虛擬化

但是虛擬化幾乎沒有缺點,例如虛擬機體積龐大。運行多個虛擬機會導致性能不穩定。啓動過程通常需要很長時間,VM 無法解決可移植性、軟件更新或持續集成和持續交付等問題。

這些缺點導致了一種稱爲容器化的新技術的出現。 

**容器化是一種將虛擬化帶到操作系統級別的虛擬化。**虛擬化爲硬件帶來了抽象,而容器化爲操作系統帶來了抽象。

容器與虛擬機

術語 “容器” 和“虛擬機”經常互換使用,然而,這往往是一種誤解。但是,兩者只是提供操作系統虛擬化的不同方法。

虛擬機 通常包括完整的操作系統、操作系統包,如果需要,還包括少量應用程序。這是通過爲虛擬機提供硬件虛擬化的管理程序實現的。這允許單個服務器作爲虛擬來賓運行許多獨立的操作系統。一般來說,虛擬機是一個完全類似於計算機的系統。

容器 類似於虛擬機,只是容器不是完整的操作系統。容器通常只包含必要的操作系統包和應用程序。它們通常不包含完整的操作系統或硬件虛擬化,這就是它們 “輕量級” 的原因。

而容器通常用於隔離單個主機內正在運行的進程,以確保隔離的進程無法與同一系統內的其他進程交互。容器之間的沙箱進程。現在,您可以將 Docker 容器視爲虛擬機的輕量級等價物。

Docker 可以儘可能輕鬆地創建和使用容器。

使用 Docker 容器的原因

什麼是 Docker 容器?

**Docker 是一個以容器的形式將應用程序及其所有依賴項打包在一起的平臺。**它使用容器使應用程序的創建、部署和運行變得更加容易。Docker 在容器內綁定應用程序及其依賴項。

容器允許開發人員將應用程序及其所需的所有部分(例如庫和其他依賴項)打包在一起,然後將其作爲一個包發送出去。

假設您需要構建一個應用程序。爲了使該應用程序可供公衆使用,您需要在某個地方託管它。過去,您需要構建自己的計算機。您需要設置一個名爲 “server” 的專用 Web 服務,它基本上是一臺專用於託管網站或 Web 服務的計算機。但是,您的應用程序開始時可能只有大約 300 兆字節的大小。那麼,當您的應用程序遠小於 1GB 大小時,您爲什麼想要一個“虛擬機”,它是由虛擬化產生的虛擬化環境?

這就是 “容器” 的概念來解決這個問題的地方。Docker 通過以下方式完成它。不需要爲每個應用程序託管每個操作系統,而是可以共享一些公共資源,並且有一種叫做 “docker 引擎” 的東西,它位於操作系統之上。

採用 Docker 或容器的結果是可以更快地部署或取消部署應用程序。更快地開始和停止,更快地轉換到另一個 “image”,更快地處理和做很多事情。

但是在開始時,您應該瞭解 Docker 生態系統中最重要的元素和工具。

Dockerfile

Dockerfile 是一組精確的指令,說明如何創建新的 Docker 鏡像。爲基於它運行的容器設置默認值等等。它是一個文本文檔,其中包含用戶可以在命令行上調用以組合圖像的所有命令。因此,Docker 可以通過讀取 Dockerfile 中的指令自動構建鏡像。

Docker Image(映像)

Docker Image 可以比作用於創建 Docker 容器的只讀模板。Image 是一個藍圖,可以從中啓動任意數量的全新容器。沒有 “當前運行的命令” 保存在 Image 中。當您啓動容器時,有點像在關閉電源後啓動機器。

Docker Container(容器)

它是 Docker Image 的運行實例,因爲它們包含運行應用程序所需的整個包。

想象一下,您想運行一個與系統上其他所有內容隔離的命令。它應該只訪問它被允許訪問的資源,並且不知道機器上還有其他任何東西。在容器內運行的進程認爲它是唯一的進程,並且只能看到一個準系統的 Linux 發行版,這些內容在圖像中描述。

運行容器的機器不應該過多關心裏面的內容,而 dockerized 應用程序並不關心它是在 Kubernetes 集羣還是單個服務器上——它無論如何都能運行。

一個容器一次可以運行多個進程。您可以將許多服務打包到一個容器中,並讓它們並排運行。

當一個 Docker 容器被刪除時,重新啓動鏡像將啓動一個新的容器,而不會對之前運行的容器進行任何更改——這些更改將丟失。

Docker Volume(數據卷)

容器默認不會留下任何東西。對容器所做的任何更改(假設您沒有將其另存爲 Image)都會在刪除後立即丟失。

爲了能夠保存(持久化)數據並在容器之間共享數據,Docker 提出了 Volume(數據卷)的概念 。很簡單,Volume 是默認文件系統之外的目錄(或文件),並作爲主機文件系統上的普通目錄和文件存在。

Docker Volume 使我們能夠保存數據並在容器之間共享。

結論

我們希望這篇文章有助於理解 Docker 和 Docker 容器是什麼以及它如何徹底改變軟件開發的基本 Docker 基礎。有了上面的知識,你應該對 Docker 的核心有一個深刻的瞭解。

關於 Docker 的更多信息可以訪問該 項目的網站 ,也可以參考 官方文檔。

來自:Linux 迷
鏈接:https://www.linuxmi.com/docker-container.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/xvo6kU8EhxHqx7XbCQ1LDg