淺析linux容器--Docker

大雄45發表於2021-04-08

最近公司調整微服務架構,有幸開始接觸到Docker ,剛開始接觸到 docker 的時候我去簡單的百度了下 docker 容器,瞭解到 docker 屬於 linux 容器中的一種,透過 docker 容器發展成為一種優秀的工具。今天就目前所掌握的關於Docker 的應用作個簡短總結,在幫助自己鞏固知識點的同時希望能夠幫助到大家。

 

一、 虛擬化技術

1.  為什麼要使用虛擬化技術

虛擬化技術可以合理、高效利用資源、節省成本。比如在雙十一購物節,天貓、淘寶、京東等各大購物網站業務劇增,相對應支撐這些業務的後臺伺服器需求量也會大幅增加,而在淡季,業務相對會減少很多,相應地伺服器壓力也會降低。為了不造成資源浪費,使用虛擬化技術就可以達到動態合理分配資源的目的。

2.  傳統的虛擬化技術( 主機級虛擬化 )

傳統地虛擬化技術分為兩種型別:一種是在硬體裝置層( 宿主機 ) 上直接模擬,從而實現多個作業系統;一種是在宿主機上執行 VMware ,然後在 VMware 是執行客戶機,客戶機再對底層裝置進行呼叫,比如 CPU ,記憶體,磁碟等硬體資源。

3.  系統級虛擬化技術( 容器級虛擬化技術 )

容器級虛擬化既沒有宿主機,也沒有虛擬機器管理器,虛擬機器和虛擬機器之間共享核心,無需模擬硬體層,同時在作業系統的核心上,允許多個隔離的使用者空間。這就類似於小明同學有一天非常想同時吃炸土豆片,炸薯條和炸丸子,怎麼辦呢?一種方法是他買3 口同樣大小的鍋,同時進行,但是很明顯這種方法會造成資源的浪費,另外一種方法就是買一口帶有 2 個隔層的大鍋,且每個隔層的面積大小不一,這樣就可以根據自己的喜好炸出自己喜歡吃的炸土豆片,炸薯條和炸丸子,吃的多就放在面積稍大的隔層裡,吃的少就放在面積稍小的隔層裡,既不會造成資源浪費,也合理利用了空間。

4.  Container 的核心技術

CGroup :限制資源的使用情況,比如排程多少個 CPU, 佔用多大的記憶體等。

NameSpace :在建立新程式時候加了一個可選引數 PID ,然後利用 Linux 系統呼叫 克隆方法為其新建立的程式指定一個新的 PID 引數,那麼新建立的程式就會看到一個全新的程式空間,也就是對應的 PID 引數。 Namespace 除了可以模擬 PID 之外,還提供了 Mout UTS IPC Network User 等,在不同的程式上下文做隔離操作。

Chroot :對檔案系統進行隔離

 

二、 Docker 介紹

1.  什麼是容器?

水杯是一個用來裝水的容器,果籃是用來裝水果的容器,同理,Docker 是用來裝應用程式的容器,比如我們熟悉的 MySQL Nginx 等。

2.  什麼是Docker

Docker 是用來建立、部署、執行應用程式的工具,比如當前熱門的微服務, CI/CD

3.  為什麼要使用Docker

Docker 容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone app , 更重要的是容器效能開銷極低。正是由於這種技術的優點, Docker 在開發、測試、運維都有廣泛的應用。在開發領域,會使用 Docker 搭建開發環境;在測試領域,會使用 Docker 搭建測試環境,比如對測試用例進行管理的禪道系統,對多版本測試,對應多套測試環境,如果使用 Docker ,就可以在一套環境上啟用不同的 Docker 就可以達到目的;在運維領域,分配網路資源,搭建監控系統,備份系統等都可以使用 Docker

三、 安裝Docker

在不同的作業系統上安裝Docker 方法是不一樣的,這個大家可以自己使用的作業系統自行搜尋安裝方法。

四、 Docker 的基本操作

1.  Docker image

列出映象:docker images

下載映象:docker pull

刪除映象:docker rmi 映象名稱

檢視映象詳細資訊:docker ps -a

2.  Docker Container

執行容器:docker run -it

列出容器:docker container ls

檢視容器的程式和資源利用情況:docker ps -a

停止/ 開啟容器: docker start/stop < 容器 ID>

刪除容器:docker rm -f < 容器 ID>

五、 Docker 應用場景

1.  快速部署

在使用虛擬化技術,硬體資源的更換需要幾天時間,虛擬化技術將這個時間縮短到幾分鐘,自從引進Docker 技術,這個操作可以控制在幾秒鐘。

2.  簡化配置

虛擬機器最大的好處是可以在同一個宿主機上執行各種不一樣的作業系統,而Docker 可以將執行環境和配置放在程式碼中然後執行,降級硬體和應用環境的關聯性。

3.  隔離應用和整合服務

由於Docker 應用既沒有宿主機,也沒有虛擬機器管理器,虛擬機器和虛擬機器之間共享核心,無需模擬硬體層,同時在作業系統的核心上,允許多個隔離的使用者空間,這種隔離應用的能力使得 docker 可以整合多個服務以降低成本。

當然Docker 的應用場景還有很多,比如多租戶環境,除錯能力等,這裡就不一一介紹了。今天能接觸到 Docker ,還得力於 這本書,是它讓我接觸並體驗到虛擬化技術,這本書通俗易懂,很適合入門,有需要的同學可以自行查閱。

 


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

相關文章