日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Docker系列教程之一】docker入门

發布時間:2023/12/18 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Docker系列教程之一】docker入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在理解?docker?之前,首先我們得先區分清楚兩個概念,容器虛擬機

我們用的傳統虛擬機如?VMware?,?VisualBox?之類的需要模擬整臺機器包括硬件,每臺虛擬機都需要有自己的操作系統,虛擬機一旦被開啟,預分配給它的資源將全部被占用。每一臺虛擬機包括應用,必要的二進制和庫,以及一個完整的用戶操作系統。

而容器技術是和我們的宿主機共享硬件資源及操作系統,可以實現資源的動態分配。容器包含應用和其所有的依賴包,但是與其他容器共享內核。容器在宿主機操作系統中,在用戶空間以分離的進程運行。

容器技術是實現操作系統虛擬化的一種途徑,可以讓您在資源受到隔離的進程中運行應用程序及其依賴關系。通過使用容器,我們可以輕松打包應用程序的代碼、配置和依賴關系,將其變成容易使用的構建塊,從而實現環境一致性、運營效率、開發人員生產力和版本控制等諸多目標。容器可以幫助保證應用程序快速、可靠、一致地部署,其間不受部署環境的影響。容器還賦予我們對資源更多的精細化控制能力,讓我們的基礎設施效率更高。通過下面這幅圖我們可以很直觀的反映出這兩者的區別所在。

?

Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的?Linux?容器解決方案。

而?Linux?容器是?Linux?發展出了另一種虛擬化技術,簡單來講,?Linux?容器不是模擬一個完整的操作系統,而是對進程進行隔離,相當于是在正常進程的外面套了一個保護層。對于容器里面的進程來說,它接觸到的各種資源都是虛擬的,從而實現與底層系統的隔離。

Docker?將應用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了?Docker?,就不用擔心環境問題。

總體來說,?Docker?的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。

Docker的優勢

Docker相比于傳統虛擬化方式具有更多的優勢:

  • docker?啟動快速屬于秒級別。虛擬機通常需要幾分鐘去啟動

  • docker?需要的資源更少,?docker?在操作系統級別進行虛擬化,?docker?容器和內核交互,幾乎沒有性能損耗,性能優于通過?Hypervisor?層與內核層的虛擬化

  • docker?更輕量,?docker?的架構可以共用一個內核與共享應用程序庫,所占內存極小。同樣的硬件環境,?Docker運行的鏡像數遠多于虛擬機數量,對系統的利用率非常高

  • 與虛擬機相比,?docker?隔離性更弱,?docker?屬于進程之間的隔離,虛擬機可實現系統級別隔離

  • 安全性:?docker?的安全性也更弱。?Docker?的租戶?root?和宿主機?root?等同,一旦容器內的用戶從普通用戶權限提升為root權限,它就直接具備了宿主機的root權限,進而可進行無限制的操作。虛擬機租戶?root?權限和宿主機的?root?虛擬機權限是分離的,并且虛擬機利用如?Intel?的?VT-d?和?VT-x?的?ring-1?硬件隔離技術,這種隔離技術可以防止虛擬機突破和彼此交互,而容器至今還沒有任何形式的硬件隔離,這使得容器容易受到攻擊

  • 可管理性:?docker?的集中化管理工具還不算成熟。各種虛擬化技術都有成熟的管理工具,例如?VMwarevCenter提供完備的虛擬機管理能力

  • 高可用和可恢復性:?docker?對業務的高可用支持是通過快速重新部署實現的。虛擬化具備負載均衡,高可用,容錯,遷移和數據保護等經過生產實踐檢驗的成熟保障機制,?VMware?可承諾虛擬機?99.999%?高可用,保證業務連續性

  • 快速創建、刪除:虛擬化創建是分鐘級別的,?Docker?容器創建是秒級別的,?Docker?的快速迭代性,決定了無論是開發、測試、部署都可以節約大量時間

  • 交付、部署:虛擬機可以通過鏡像實現環境交付的一致性,但鏡像分發無法體系化。?Docker?在?Dockerfile?中記錄了容器構建過程,可在集群中實現快速分發和快速部署

我們可以從下面這張表格很清楚地看到容器相比于傳統虛擬機的特性的優勢所在:

特性容器虛擬機
啟動秒級分鐘級
硬盤使用一般為MB一般為GB
性能接近原生弱于
系統支持量單機支持上千個容器一般是幾十個

Docker的三個基本概念

從上圖我們可以看到,?Docker?中包括三個基本的概念:

  • Image(鏡像)

  • Container(容器)

  • Repository(倉庫)

鏡像是?Docker?運行容器的前提,倉庫是存放鏡像的場所,可見鏡像更是?Docker?的核心。

Image (鏡像)

那么鏡像到底是什么呢?

Docker?鏡像可以看作是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。

鏡像?(Image)就是一堆只讀層?(read-only layer)的統一視角,也許這個定義有些難以理解,下面的這張圖能夠幫助讀者理解鏡像的定義。

從左邊我們看到了多個只讀層,它們重疊在一起。除了最下面一層,其它層都會有一個指針指向下一層。這些層是?Docker?內部的實現細節,并且能夠在主機的文件系統上訪問到。統一文件系統?(unionfile system)?技術能夠將不同的層整合成一個文件系統,為這些層提供了一個統一的視角,這樣就隱藏了多層的存在,在用戶的角度看來,只存在一個文件系統。我們可以在圖片的右邊看到這個視角的形式。

Container (容器)

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

由于容器的定義并沒有提及是否要運行容器,所以實際上,容器 = 鏡像 + 讀寫層。

Repository (倉庫)

Docker?倉庫是集中存放鏡像文件的場所。鏡像構建完成后,可以很容易的在當前宿主上運行,但是, 如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,?DockerRegistry?(倉庫注冊服務器)就是這樣的服務。有時候會把倉庫?(Repository)?和倉庫注冊服務器?(Registry)?混為一談,并不嚴格區分。?Docker?倉庫的概念跟?Git?類似,注冊服務器可以理解為?GitHub?這樣的托管服務。實際上,一個?DockerRegistry?中可以包含多個倉庫?(Repository)?,每個倉庫可以包含多個標簽?(Tag),每個標簽對應著一個鏡像。所以說,鏡像倉庫是?Docker?用來集中存放鏡像文件的地方類似于我們之前常用的代碼倉庫。

通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本?。我們可以通過?<倉庫名>:<標簽>的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以?latest?作為默認標簽.。

倉庫又可以分為兩種形式:

  • public(公有倉庫)

  • private(私有倉庫)

DockerRegistry?公有倉庫是開放給用戶使用、允許用戶管理鏡像的?Registry?服務。一般這類公開服務允許用戶免費上傳、下載公開的鏡像,并可能提供收費服務供用戶管理私有鏡像。

除了使用公開服務外,用戶還可以在本地搭建私有?DockerRegistry?。?Docker?官方提供了?DockerRegistry?鏡像,可以直接使用做為私有?Registry?服務。當用戶創建了自己的鏡像之后就可以使用?push?命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上?pull?下來就可以了。

轉載于:https://www.cnblogs.com/blackCatFish/p/9771038.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【Docker系列教程之一】docker入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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