Docker容器技術與Docker介紹

tieniu6636發表於2022-06-13

1. 為什麼"還"要學 Docker

在過去幾年時間裡,容器(Container)技術得到了快速的發展和普及。在這樣的大背景下,我們作為開發人員,容器技術可以說是我們必備的基礎技能之一。而 Docker 是容器技術中目前普及率最高的一個實現。

雖然現在 DevOps 領域最火的 Kubernetes(K8s) 已經棄用了 Dockershim(這是一個介面卡元件,使得你可以把 Docker 用作 K8s 的容器執行時),但這並不代表 K8s 就不能執行 Docker 容器了。Dockershim 一定還會繼續由社群或官方維護,或者 Docker 將來可能會支援 CRI 規範以使它可以不用藉助介面卡元件便可以執行在 K8s 中,所以目前來看大家完全不必擔心。

Docker 目前在市場上的及率依然非常高,在實際環境中還是有很多更適合直接使用 Docker 的場景。

另外,我個人感覺,學習了 Docker 再去學 K8s 會輕鬆很多,很多概念不會那麼抽象。

2. 什麼是容器

顧名思義,容器(Container)是 IT 世界標準化的“集裝箱”。就像運輸業使用實體集裝箱隔離不同的貨物,以便透過船隻和火車運輸,軟體開發技術也已使用這種容器化的方法。

最早的容器技術應該是一個叫 Linux Container 的工具,簡稱 LXC,它是一種核心輕量級的作業系統層的虛擬化技術。Linux Container 的實現主要包含 Namespace 和 Cgroup 兩大基礎技術,前者是名稱空間,主要用於資源的隔離,後者負責資源管理和控制,比如 CPU 和記憶體的限制、程式組的掛起、恢復和優先順序控制等。

隨著虛擬化技術的發展,在 LXC 系統層容器技術的基礎上,又誕生了應用層容器技術,比如 Docker。它是執行在作業系統之上的一個應用程式,在這個應用程式中,可以將需要部署的應用程式進行容器化,讓各個應用程式執行在被隔離的容器中。

容器的主要優勢特點是:標準化、輕量級、易移植、低成本。容器技術提供輕量級固定的基礎設施,無需配置硬體和花費時間安裝作業系統和軟體來託管部署。它可將應用程式的程式碼與相關配置檔案、庫及執行應用程式所需的一切以非常標準化的方式組合打包在一起,這可讓開發人員或運維人員順暢地跨環境部署應用程式,從而解決應用程式換個環境就無法正確執行的問題。容器之間彼此隔離,有助於提升應用程式的安全性。

3. 什麼是 Docker

前文說了,Docker 是容器技術的一種實現。Docker 是一個用於開發、交付和執行容器的容器化平臺。桌面版 Docker 支援 Linux、Windows 和 macOS。對於伺服器環境,Docker 支援 Linux 的多種分發版本和 Windows Server 2016 及更高版本,許多雲服務商(如阿里雲、Azure 等)都支援 Docker。

Docker 使用的是 C/S(客戶端/伺服器)架構。Docker 客戶端與 Docker 守護程式(Daemon)對話,後者負責構建、執行和分發 Docker 容器。Docker 客戶端和守護程式可以執行在同一個系統上,或者你可以將 Docker 客戶端連線到一個遠端的 Docker 守護程式,它們之間使用 REST API 通訊。另一個 Docker 客戶端是 Docker Compose,它可以讓你處理由一組容器組成的應用程式。

Docker 客戶端是一個名為 docker 的命令列應用程式,它為我們提供了一個命令列介面 (CLI),用於與 Docker 伺服器進行互動。docker 命令使用 REST API 介面將諸如 docker run 之類的指令傳送到本地或遠端伺服器來管理容器。一個 Docker 客戶端可以多個守護程式通訊。

Docker 伺服器中的守護程式(名為 dockerd)監聽 Docker API 請求並管理 Docker 物件,如映象、容器、網路、外掛等。守護程式還可以與其他守護程式進行通訊,以管理 Docker 服務。

Docker 映象倉庫是一個軟體即服務(SaaS)Docker 容器 Registry(登錄檔)。Docker 映象倉庫是用於儲存和分發建立的容器映象。Docker Hub 是 Docker 用於映象管理的預設公共倉庫。

4. 結語

本文主要介紹了什麼是容器和什麼是 Docker,相信你對容器技術和 Docker 已經有了基本的瞭解。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018409/viewspace-2900248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章