Docker容器的原理 特徵 基本架構 與應用場景

2022-09-20 09:18:10 字數 3307 閱讀 5629

一句話概括容器:容器就是將軟體打包成標準化單元,以用於開發、交付和部署。

再來看看容器較為通俗的解釋:

如果需要通俗的描述容器的話,我覺得容器就是乙個存放東西的地方,就像書包可以裝各種文具、衣櫃可以放各種衣服、鞋架可以放各種鞋子一樣。我們現在所說的容器存放的東西可能更偏向於應用比如**、程式甚至是系統環境。

docker 是乙個開源專案,誕生於 2013 年初,最初是 dotcloud 公司內部的乙個業餘專案。它基於 google 公司推出的 go 語言實現。 專案後來加入了 linux **會,遵從了 apache 2.0 協議,專案**在 github 上進行維護。

說實話關於docker是什麼並太好說,下面我通過四點向你說明docker到底是個什麼東西。

作為一種新興的虛擬化方式,docker 跟傳統的虛擬化方式相比具有眾多的優勢。

docker 在如下幾個方面具有較大的優勢:

1.更快速的交付和部署

docker在整個開發周期都可以完美的輔助你實現快速交付。docker允許開發者在裝有應用和服務本地容器做開發。可以直接整合到可持續開發流程中。

例如:開發者可以使用乙個標準的映象來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署**。 docker 可以快速建立容器,快速迭代應用程式,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程式是如何建立和工作的。 docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。

2.高效的部署和擴容

docker 容器幾乎可以在任意的平台上執行,包括物理機、虛擬機器、公有雲、私有雲、個人電腦、伺服器等。

這種相容性可以讓使用者把乙個應用程式從乙個平台直接遷移到另外乙個。

docker的相容性和輕量特性可以很輕鬆的實現負載的動態管理。你可以快速擴容或方便的下線的你的應用和服務,這種速度趨近實時。

3.更高的資源利用率

docker 對系統資源的利用率很高,一台主機上可以同時執行數千個 docker 容器。容器除了執行其中應用外,基本不消耗額外的系統資源,使得應用的效能很高,同時系統的開銷盡量小。

傳統虛擬機器方式執行 10 個不同的應用就要起 10 個虛擬機器,而docker 只需要啟動 10 個隔離的應用即可。

4.更簡單的管理

使用 docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。

比較上面兩張圖,我們發現虛擬機器是攜帶作業系統,本身很小的應用程式卻因為攜帶了作業系統而變得非常大,很笨重。

docker是不攜帶作業系統的,所以docker的應用就非常的輕巧。

另外在呼叫宿主機的cpu、磁碟等等這些資源的時候,拿記憶體舉例,虛擬機器是利用hypervisor去虛擬化記憶體,整個呼叫過程是虛擬記憶體->虛擬物理記憶體->真正物理記憶體,但是docker是利用docker

engine去呼叫宿主的的資源,這時候過程是虛擬記憶體->真正物理記憶體。

docker 使用客戶端-伺服器 (c/s) 架構模式,使用遠端api來管理和建立docker容器。

docker 主要有以下幾部分組成:

docker client 客戶端

docker daemon 守護程序

docker image 映象

docker container 容器

docker registry 倉庫

客戶端和守護程序:

docker 容器通過 docker 映象來建立,容器與映象的關係類似於物件導向程式設計中的物件與類。

如圖所示基本架構:

1.docker 映象(images)

docker 映象是用於建立 docker 容器的模板。

2.docker 容器(container)

容器是獨立執行的乙個或一組應用。

3.docker 客戶端(client)

docker 客戶端通過命令列或者其他工具使用 docker api

4.docker 主機(host)

乙個物理或者虛擬的機器用於執行 docker 守護程序和容器。

5.docker 倉庫(registry)

docker 倉庫用來儲存映象,可以理解為**控制中的**倉庫。

6.docker hub

提供了龐大的映象集合供使用。

7.docker machine

docker machine是乙個簡化docker安裝的命令列工具,通過乙個簡單的命令列即可在相應的平台上安裝docker,比如virtualbox、 digital ocean、microsoft azure。

總之,docker是一種輕量虛擬化的容器技術,提供類似虛擬機器的隔離功能,並使用了一種分層的聯合檔案系統技術管理映象,能極大簡化環境運維過程,最後看看對應的應用場景。

1. 作為雲主機使用

相比虛擬機器來說,容器使用的是一系列非常輕量級的虛擬化技術,使得其啟動、部署、公升級跟管理程序一樣迅速,用起來靈活又感覺跟虛擬機器一樣沒什麼區別,所以有些人直接使用docker的ubuntu等映象建立容器,當作輕量的虛擬機器來使用。

2. 作為服務使用

如果你僅僅把docker容器當作乙個輕量的固定虛擬機器用,那其實只能算是另類用法,docker容器最重要價值在於提供一整套平台無關的標準化技術,簡化服務的部署、公升級、維護,只要把需要運維的各種服務打包成標準的貨櫃,就可以在任何能執行docker的環境下跑起來,達到開箱即用的效果,這個特點才是docker容器風靡全球的根本原因。

3. 微服務架構使用

如果說上面兩種應用場景還不足以體現出與傳統的paas平台相比的巨大優勢的話,那麼對微服務的架構這種複雜又靈活的使用場景的無縫支援絕對具有革命意義。

微服務架構將傳統分布式服務繼續拆分解耦,形成一些更小服務模組,服務模組之間獨立部署公升級,這些特性與容器的輕量、高效部署不謀而合。

Docker容器的基本使用

docker容器化技術極大提公升了軟體交付效率,本文講述在windows系統上docker容器的基本使用。windows系統安裝docker toolbox,安裝完後,會有docker quickstart terminal和kitematic兩個快捷方式。docker quickstart ter...

docker容器的基本操作

1 拉取乙個官方認證的 純淨的映象 centos docker pull centos2 檢視有多少個映象 docker images3 如果你要刪除某個映象 docker rmi image id就是映象id,通過上面docker images命令可以看到 如果你的映象已經裝入容器 被使用 你需要...

Docker 容器基本操作

建立容器 啟動容器 停止容器 容器刪除 依附容器 容器內執行命令 檢視容器資訊 檢視容器程序 檢視容器日誌 啟動容器後,使用docker ps命令檢視當前正在執行的容器 引數釋義 container id 容器id,唯一識別符號,64位的十六進製制整數,在不會混淆的情況下可以只採用id的前幾位進行標...