亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

了解最常用的開發(fā)技術(shù)之一背后的基礎(chǔ)組件和系統(tǒng)的基礎(chǔ)

Docker架構(gòu)概述

Image source: Docker Logos and Photos

如果您最近來到了一個美好的容器世界,或者您已經(jīng)來過一段時間,那么了解可以協(xié)同工作以提供Docker巨大好處的基礎(chǔ)系統(tǒng)和元素可能不是一個壞主意。

了解基礎(chǔ)

鏡像還是容器?

首先是第一件事。 具有基本術(shù)語的明確知識從未傷害任何人。 鏡像和容器似乎是等效的術(shù)語-它們不是同一回事嗎? 我的意思是,我都使用它們將我的應(yīng)用程序投放到某些服務(wù)器,PaaS或其他任何服務(wù)器上。

好,是的,但實際上沒有

可以根據(jù)軟件開發(fā)將容器描述為鏡像實例。 該語句有一些含義:

· 可以從同一鏡像中生成無限數(shù)量的容器。

· 鏡像內(nèi)部的資源將出現(xiàn)在其所有生成的容器中。 哪種資源? 任何:文件,服務(wù),二進制文件,cron作業(yè)等。

· 刪除容器后,其所有內(nèi)容都將丟失。 稍后,我們將學(xué)習(xí)如何處理數(shù)據(jù)持久性。

實際的鏡像容器差異

我們了解到,容器就是某種鏡像實例。 了解基本區(qū)別就足夠了。 但是要提高我們的Docker技能,我們需要更深入地了解鏡像概念。

鏡像是一疊圖層。 那是一層呢? 一層是相對于上一層的一組差異。 Dockerfile是定義如何構(gòu)建鏡像的文件。 該文件中的每條指令代表鏡像的一層。 層被緩存以更快地構(gòu)建鏡像,因此良好的Dockerfile實現(xiàn)確實可以使構(gòu)建時間和鏡像大小有所不同。

Docker架構(gòu)概述

Image layers as explained by docs.docker.com

這是真正的交易。 生成容器時,我們將獲取鏡像的圖層堆棧,并在頂部(容器層)上生成一個可寫層。 容器生命周期中生成的所有更改都將寫入此層。 因此,刪除容器時,容器層數(shù)據(jù)將丟失。

Docker架構(gòu)概述

Multiple containers from the same image, docs.docker.com

Docker架構(gòu)101

Docker引擎

您是否嘗試安裝Docker? 您可能已經(jīng)注意到,不僅需要安裝Docker,還需要安裝dockerd。

那是因為Docker是一個客戶端服務(wù)器應(yīng)用程序。 您必須同時擁有這兩個部分才能在計算機上運行Docker應(yīng)用程序。 此客戶端-服務(wù)器串聯(lián)稱為docker引擎。

docker客戶端只是一個CLI工具,用于針對REST API發(fā)出請求,該REST API負責(zé)與docker守護程序或dockerd進行交互。 dockerd將處理操作系統(tǒng)以確保容器的正確行為。

Docker架構(gòu)概述

Docker engine as explained by docs.docker.com

 

等等,您是否說了有關(guān)客戶端服務(wù)器的內(nèi)容? 這是否意味著我可以向遠程Docker守護程序拋出請求? 好了,您現(xiàn)在可能已經(jīng)意識到諸如Kubernetes,OpenShift和Docker Swarm之類的編排服務(wù)是如何工作的。

大圖景

現(xiàn)在我們對Docker的主要元素有了清晰的了解,它們?nèi)绾螀f(xié)同工作?

每當(dāng)在Docker客戶端中創(chuàng)建請求時,該請求都會發(fā)送到Docker守護程序,它將執(zhí)行所需的操作。

讓我們以運行redis容器為例。 我們通過運行docker run redis指令來實現(xiàn)這一點。

Docker架構(gòu)概述

Docker architecture, docs.docker.com

首先,我們的計算機將向已配置的Docker主機API發(fā)出請求,該API將與Docker守護程序進行交互。

至此,守護程序知道其必須執(zhí)行的操作。 它將在主機注冊表上查找redis鏡像。 如果不存在,則會進行一次新查找,這次將針對已配置的鏡像注冊表(Docker Hub,ECR,ACR,GCR等)進行搜索并提取(下載)。 然后,它將基于下載的生成一個容器。

 

其他主要Docker零件

持久性問題

如果由于某種原因,我們的postgres容器崩潰了,并且無法再次啟動,則我們可能需要移除該容器并運行另一個容器。 但是,如前所述,容器層數(shù)據(jù)將丟失,我們不想丟失所有數(shù)據(jù),是嗎?

為持久性問題提供的兩個解決方案是卷和綁定安裝。 通過這兩者,我們可以將正在運行的容器的文件系統(tǒng)持久保存到主機中。

一方面,卷將數(shù)據(jù)存儲在主機中,只有dockerd可以修改此文件系統(tǒng)。 這是通常存儲數(shù)據(jù)的首選方式。

另一方面,使用綁定安裝,我們不僅可以將目錄安裝到容器中,還可以將具體文件安裝到容器中。 另外,綁定安裝允許安裝任何主機目錄或文件。 這意味著我們可以從主機將數(shù)據(jù)插入到容器中。 對于配置文件而言,這是巨大的。

Docker架構(gòu)概述

Different data storage provided by Docker, docs.docker.com

第三種數(shù)據(jù)掛載模式tmps,在linux主機中使用,用于持久存儲我們不想在容器層或主機文件系統(tǒng)中寫入的數(shù)據(jù)(例如密鑰)。 此數(shù)據(jù)保留在主機內(nèi)存中。

為什么我的容器無法ping通google?

也許您想在與世界隔絕的計算機中運行驚人的Web應(yīng)用程序。 但是,這并不是Docker的主要用例,因此網(wǎng)絡(luò)在編排Docker容器時起著重要的作用。

Docker提供了將不同類型的網(wǎng)絡(luò)驅(qū)動程序附加到運行中的容器的可能性,從而實現(xiàn)了容器與另一個容器,Docker主機和/或Internet之間的連接。

Docker架構(gòu)概述

Example of a bridge network provided by docs.docker.com

由于容器本身并不需要真正的網(wǎng)絡(luò)知識,因此我們將在本主題中另辟piece徑。

 

去玩吧!

現(xiàn)在,您應(yīng)該對不同的Docker資源如何協(xié)同工作有一個更清晰的認(rèn)識。 您現(xiàn)在應(yīng)該至少能夠理解"容器世界"中討論的大多數(shù)概念的表面。

我邀請您進行自己的研究,以更深入地研究這些主題,并構(gòu)建和部署您的容器化應(yīng)用。 這里有一些想法:

· 嘗試不同的卷/網(wǎng)絡(luò)模式。

· 測試層緩存與無緩存的構(gòu)建時間。

· 嘗試多步驟構(gòu)建。

· 沉迷于出色的docker-compose。

 

(本文翻譯自Víctor Suárez Fernández的文章《An Overview of Docker Architecture》,參考:https://medium.com/better-programming/an-overview-to-docker-architecture-15407c482c52)

分享到:
標(biāo)簽:架構(gòu) Docker
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定