一文了解Docker基本概念

2022-09-09 05:09:08 字數 3140 閱讀 1840

docker 是乙個用於開發、交付和執行應用程式的開放平台,docker 使您能夠將應用程式與基礎環境分開,以便您可以快速交付軟體。

應用容器引擎,讓開發者可以

打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的linux

或windows作業系統的機器上,也可以實現虛擬化,容器是完全使用沙箱機

制,相互之間不會有任何介面。

對於開發者來說,開發人員可以利用docker開發和執行應用程式

對於運維人員來說,docker可以部署和管理應用程式。

docker和容器的關係就類似與vmware和虛擬機器的關係,docker類似於vmware,容器類似於虛擬機器。

有人會問,既然docker以及容器分別與vmware和虛擬機器類似,那麼為什麼還會用到docker,他們之間有什麼差別?

1、通過上圖可以發現,每個虛擬機器下,都要安裝乙個作業系統,而容器是不需要的,它只需要軟體工作所需的庫資源和設定,他是直接執行在作業系統上面,乙個作業系統之上可以

有多個容器執行,容器不僅

比虛擬機器更輕量,更快速,還起到了與虛擬機器差不多的功能,並且保證了在任何環境中的軟體能夠始終如一的執行。

2、借助docker,你可以像管理應用程式一樣管理基礎架構

3、借助docker可以實現程式的快速部署和分發,以及降低配置開發環境、生產環境複雜程度和成本。

4、更高效的利用系統資源 由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷,docker 對系統資源的利用 率更高。無論是應用執行速度、記憶體損耗或者檔案儲存速度,

都要比傳統虛擬機器技術更高

效。因此,相比虛擬機器技術,乙個相同配置的主機,往往可以執行更多數量的應用。

5、更快速的啟動時間 傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而 docker 容器應用,由於直接執行於宿主 核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級

的啟動時間。大大的節約了

開發、測試、部署的時間。

docker是乙個客戶端-服務端(cs)應用程式

服務端:乙個長時間執行的守護程序(docker daemon),docker daemon偵聽 docker api 請求並管理 docker 物件,例如映象、容器、網路和卷。

注:不過現在越來越多的功能早已從daemon中拆解出來並被模組化,感興趣的小夥伴可以去多多了解。

客戶端:命令列介面cli,docker 使用者與 docker 互動的主要方式。

通訊:docker 客戶端和守護程序使用 rest api、unix 套接字或網路介面進行通訊

映象:對於 linux 而言,核心啟動後,會掛載 root 檔案系統為其提供使用者空間支援。而 docker 映象(image),就相當於是乙個 root 檔案系統。比如官方映象 ubuntu:16.04 就包含

了完整的一套 ubuntu 16.04 最小系統的 root 檔案 系統。docker映象(image)是乙個唯讀模板,乙個docker的可執行檔案,映象可以用來建立docker容器,乙個映象可以建立很多容

器。映象在構建之後其內容不可改變。

docker映象由一層層layer組成,我們稱之為映象層,最後一層也是最上面的一層我們稱之為容器層。

映象構建時,會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在自己這一層。比如,刪除前一層檔案的操作,實際不是真的刪

除前一層的檔案,而是僅在當前層標記為該檔案已刪除。在最終容器執行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨映象。

每一層都對應這dockerfile中的一條指令,通常最後一層為cmd層或者entrypoint層,這一層是r/w的,即容器層。

docker映象採用這種分層機構最大的乙個好處就是共享資源。

比如:有多個映象都從相同的base映象構建而來,那麼宿主機只需在磁碟上儲存乙份base映象,

同時記憶體中也只需要載入乙份base映象,就可以為所有容器服務了。而且映象的每一

層都可以被共享。

容器:docker利用容器(container)獨立執行的乙個或一組應用。容器是映象建立的執行例項。

它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。

可以把容器看作是乙個簡易版的linux環境(包括root許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式。

容器的定義和映象幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層可讀可寫。

每乙個容器執行時,是以映象為基礎層, 在其上建立乙個當前容器的儲存層,我們可以稱這個為容器執行時讀寫而準備的儲存層為容 器儲存層。 容器儲存層的生存週期和容器一

樣,容器消亡時,容器儲存層也隨之消亡。因此,任何儲存 於容器儲存層的資訊都會隨容器刪除而丟失。

網路:外部或者容器間訪問的網路方式,如host模式,bridge模式

資料卷:容器與宿主機之間、容器與容器之間共享儲存方式,類似於虛擬機器與主機之間的共享檔案目錄。

docker倉庫

倉庫(repository)是集中存放映象檔案的場所。

倉庫分為私有倉庫和公有倉庫兩種形式

dockerhub類似與github,不過前者是存放映象,後者是存放**

1、docker使用go語言來實現的

2、docker利用linux核心的幾個特性來實現功能

2.1、利用linux的命名空間(namespaces)為docker容器提供系統層面的隔離

2.2、利用linux控制組(control groups)為docker提供硬體層面的隔離

2.3、利用linux的聯合檔案系統(union file systems)利用分層(layer)思想管理映象和容器

2.4容器格式

docker入門一 docker基本概念

docker 是個偉大的專案,它徹底釋放了虛擬化的威力,極大降低了雲計算資源 的成本,同時讓應用的分發 測試 部署和分發都變得前所未有的高效和輕鬆,docker有最基本的幾個概念 docker 映象 docker 映象就是乙個唯讀的模板,像可以用來建立 docker 容器。docker 容器 doc...

Docker基本概念

docker是開發人員和系統管理員構建,發布和執行應用程式的平台。docker允許您快速使用元件組裝應用程式,並消除運送 時可能產生的改變。docker允許您盡快測試並將 部署到生產環境中。docker可以簡化軟體交付,是通過簡化構建包含應用程式整個環境或應用程式作業系統的映象,並共享這個映象。應用...

Docker基本概念

docker 包括三個基本概念 理解了這三個概念,就理解了 docker 的整個生命週期。docker 映象就是乙個唯讀的模板。例如 乙個映象可以包含乙個完整的 ubuntu 作業系統環境,裡面僅安裝了 apache 或使用者需要的其它應用程式。映象可以用來建立 docker 容器。docker 利...