日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于 Docker ,你必须了解的核心都在这里了!

發布時間:2024/8/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于 Docker ,你必须了解的核心都在这里了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源 |?fysuccess

來源 | CSDN博客,責編 | Carol

頭圖 | CSDN 下載自視覺中國

Docker引擎

Docker Engine是具有以下主要組件的客戶端-服務器應用程序:

  • 服務器是一種長期運行的程序,稱為守護程序進程( dockerd命令)。

  • REST API,它指定程序可以用來與守護程序進行通信并指示其操作的接口。

  • 命令行界面- - (CLI)客戶端(docker命令)。

Docker架構

Docker使用客戶端-服務器架構。Docker 客戶端與Docker 守護進程進行對話,該守護進程完成了構建,運行和分發Docker容器的繁重工作。Docker客戶端和守護程序可以 在同一系統上運行,或者您可以將Docker客戶端連接到遠程Docker守護程序。Docker客戶端和守護程序在UNIX套接字或網絡接口上使用REST API進行通信。

  • Docker守護程序

Docker守護程序(dockerd)偵聽Docker API請求并管理Docker對象,例如鏡像,容器,網絡和卷。守護程序還可以與其他守護程序通信以管理Docker服務。

Docker是C/S架構的程序,Docker的客戶端向守護進程發起請求,守護進程處理完成后返回結果。

Docker客戶端既可以在本地訪問守護進程,也可以遠程訪問守護進程。

  • Docker客戶端

Docker客戶端(docker)是許多Docker用戶與Docker交互的主要方式。當您使用諸如之類的命令時docker run,客戶端會將這些命令發送到dockerd,以執行這些命令。該docker命令使用Docker API。Docker客戶端可以與多個守護程序通信。

  • Docker注冊表

Docker 注冊表存儲Docker映像。Docker Hub是任何人都可以使用的公共注冊表,并且Docker配置為默認在Docker Hub上查找映像。您甚至可以運行自己的私人注冊表。如果使用Docker數據中心(DDC),則其中包括Docker可信注冊表(DTR)。

使用docker pull或docker run命令時,所需的圖像將從配置的注冊表中提取。使用該docker push命令時,會將映像推送到配置的注冊表。

  • Docker對象

1)Images(鏡像):

Docker 鏡像(Image)就是一個只讀的創建 Docker 容器的模板。鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器。

鏡像是容器的基石,容器基于鏡像啟動,鏡像就像是容器的源代碼,保存了用于容器啟動的各種條件。

鏡像是一個層疊的只讀文件系統,結構如下

bootfs 引導文件系統;

rootfs root文件系統,可以是一種或多種操作系統,如Ubuntu或CentOS,root文件系統永遠只能是只讀狀態;

union mount 聯合加載技術,一次加載多個只讀文件系統到rootfs系統之上。在外圍看到的只是一個文件系統,聯合加載使各層文件系統疊加到一起,使最終的文件系統包含所有底層文件系統和目錄,這樣的文件系統就是鏡像。

一個鏡像可以放到另一個鏡像的頂部,位于下邊的鏡像叫做父鏡像,依次類推,最底部的鏡像叫做基礎鏡像,指的是rootfs

2)container(容器):容器是鏡像的可運行實例,他們的關系就有點類似java中類和對象的關系。

通過鏡像啟動:容器是docker的執行單元。

啟動和執行:鏡像如果是構建和打包階段,則容器是啟動和執行階段

容器啟動過程:啟動時在鏡像的最頂層加一個可寫的文件系統,即可寫層。Docker中運行的程序就是在這個層中執行的。docker第一次啟動一個容器時,可寫層是空的,當文件系統發生變化,都會應用到這一層。如果想修改一個文件,該文件首先會從可讀寫層下邊的只讀層復制到該讀寫層,該文件的只讀版本依然存在,但是已經被讀寫層中的該文件副本所隱藏。這個是docker的重要機制,寫時復制(copy on write)。

Docker 利用容器(Container)獨立運行的一個或一組應用。容器是用鏡像創建的運行實例。

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

可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序

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

3)Registry(倉庫): 是一個集中存儲和分發鏡像的服務。

倉庫(Repository)是集中存放鏡像文件的場所。

倉庫(Repository)和倉庫注冊服務器(Registry)是有區別的。倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

最大的公開倉庫是 Docker Hub(https://hub.docker.com/),

存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括阿里云 、網易云 等

4)Client(客戶端): 是Docker的用戶界面,可以接受用戶命令和配置標識,使用 Docker Api與 Docker 的守護進程(daemon)通信。

5)Host(主機): 一個物理或者虛擬的機器,用于執行 Docker 守護進程(daemon)和容器。

底層技術

Docker用Go編寫,并利用Linux內核的多個功能來交付其功能。

  • 命名空間

Docker使用一種稱為namespaces提供容器的隔離工作區的技術。運行容器時,Docker會為該容器創建一組 名稱空間。

這些名稱空間提供了一層隔離。容器的每個方面都在單獨的名稱空間中運行,并且其訪問僅限于該名稱空間。

Docker Engine在Linux上使用以下名稱空間:

  • pid命名空間:進程隔離(PID:進程ID)。

  • net命名空間:管理網絡接口(NET:網絡)。

  • ipc命名空間:管理訪問IPC資源(IPC:進程間通信)。

  • mnt命名空間:管理文件系統掛載點(MNT:摩)。

  • uts命名空間:隔離內核和版本標識符。(UTS:Unix時間共享系統)。

  • 控制組

Linux上的Docker引擎還依賴于另一種稱為控制組 (cgroups)的技術。cgroup將應用程序限制為一組特定的資源。控制組允許Docker Engine將可用的硬件資源共享給容器,并有選擇地實施限制和約束。例如,您可以限制特定容器可用的內存。

  • 聯合文件系統

聯合文件系統或UnionFS是通過創建圖層進行操作的文件系統,使其非常輕便且快速。Docker Engine使用UnionFS為容器提供構建模塊。Docker Engine可以使用多個UnionFS變體,包括AUFS,btrfs,vfs和DeviceMapper。

  • 容器格式

Docker Engine將名稱空間,控制組和UnionFS組合到一個稱為容器格式的包裝器中。默認容器格式為libcontainer。將來,Docker可以通過與BSD Jails或Solaris Zones等技術集成來支持其他容器格式。

原文鏈接:https://blog.csdn.net/fysuccess/article/details/105653802


推薦閱讀

  • 一文帶你認識keepalived,再帶你通關LVS+Keepalived!

  • 那個分分鐘處理 10 億節點圖計算的 Plato,現在怎么樣了?

  • “谷歌殺手”發明者,科學天才 Wolfram

  • 數據庫激蕩 40 年,深入解析 PostgreSQL、NewSQL 演進歷程

  • 超詳細!一文告訴你 SparkStreaming 如何整合 Kafka !附代碼可實踐

  • 5分鐘!就能學會以太坊 JSON API 基礎知識!

    真香,朕在看了!

總結

以上是生活随笔為你收集整理的关于 Docker ,你必须了解的核心都在这里了!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。