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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Docker 到底是什么,能干什么?这一篇文章全部给你解释清楚了

發(fā)布時間:2023/12/3 综合教程 46 生活家
生活随笔 收集整理的這篇文章主要介紹了 Docker 到底是什么,能干什么?这一篇文章全部给你解释清楚了 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

隨著云原生、容器化、微服務(wù)、k8s 等技術(shù)的發(fā)展,容器 Docker 也火了一把,同時也逐漸被軟件開發(fā)者在實踐中進(jìn)行運用。個人在目前接手的項目、參與的項目或技術(shù)交流中,發(fā)現(xiàn) Docker 已經(jīng)非常普及。

對于大多數(shù)開發(fā)者來說,Docker 之所以被廣泛使用,最主要的原因可能就是方便,它提供了一套標(biāo)準(zhǔn)化的解決方案,極大地提升了部署、發(fā)布、運維的效率。因此,如果你的項目中目前還沒有使用 Docker,或者想深入了解一下 Docker,這篇文章值得你一讀。

Docker 是什么?

在聊 Docker 是什么之前,我們先來回顧一下傳統(tǒng)的產(chǎn)品開發(fā)上線涉及到的難點。一款產(chǎn)品從開發(fā)到上線,經(jīng)歷了開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境等不同的操作系統(tǒng)、運行環(huán)境和應(yīng)用配置等環(huán)境。在項目管理中,還涉及到不同版本以及不同版本之間兼容性等問題。

這些問題對開發(fā)人員和運維人員都是極大的考驗,同時對各方的協(xié)作也有一定的要求。不然就會出現(xiàn)”代碼在我這里運行的好好的啊“,這種尷尬的局面。而 Docker 的出現(xiàn)就是提供了一套用來解決此類問題的標(biāo)準(zhǔn)解決方案。

Docker

Docker 的口號是”一次創(chuàng)建或配置,可以在任意地方正常運行“。如口號所說,Docker 的出現(xiàn)對于開發(fā)和運維人員是一大福音,基于 Docker 可以方便地搞定標(biāo)準(zhǔn)化的發(fā)布流程,再也不用糾結(jié)不同環(huán)境導(dǎo)致的問題了。

其實,Docker 的使用可以理解為:軟件是帶環(huán)境安裝的,也就是說,安裝的時候把原始環(huán)境一模一樣的復(fù)制過來一份。這樣也就消除了不同機(jī)器運行結(jié)果不同的問題。

那么,Docker 是什么呢?Docker 是一個開源的應(yīng)用容器引擎,基于 Go 語言,并遵從 Apache2.0 協(xié)議開源。它可以讓開發(fā)者打包應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實現(xiàn)虛擬化。Docker 可用于開發(fā)應(yīng)用、交付應(yīng)用、運行應(yīng)用等場景。

容器是完全使用沙箱機(jī)制,相互之間不會有任何接口,更重要的是容器性能開銷極低。Docker 允許用戶將基礎(chǔ)設(shè)施中的應(yīng)用單獨分割出來,形成更小的部分容器,從而提高軟件交付速度。

Docker 從 17.03 版本之后分為 CE(Community Edition: 社區(qū)版)和 EE(Enterprise Edition: 企業(yè)版),通常使用社區(qū)版就可以滿足大多數(shù)業(yè)務(wù)場景。

Docker 容器與虛擬機(jī)的區(qū)別

Docker 容器與虛擬機(jī)很相似,但它們之間又有著很大的區(qū)別。

虛擬機(jī)是通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機(jī)系統(tǒng)。創(chuàng)建虛擬機(jī)時,會將實體機(jī)的部分硬盤和內(nèi)存容量作為虛擬機(jī)的硬盤和內(nèi)存,每個虛擬機(jī)都有獨立的硬盤和操作系統(tǒng),可以像使用實體機(jī)一樣對虛擬機(jī)進(jìn)行操作。

虛擬機(jī)會消耗大量系統(tǒng)資源和開銷,尤其是當(dāng)多個虛擬機(jī)在同一物理服務(wù)器上運行時,每個虛擬機(jī)都有自己的子操作系統(tǒng),大量精力以及資源被用于虛擬化的部署和運行上。

容器類似于虛擬機(jī),只是容器不是完整的操作系統(tǒng),容器通常只包含必要的操作系統(tǒng)包和應(yīng)用程序,這就是它們輕量級的原因。

Docker 與虛擬機(jī)

可以出,傳統(tǒng)的虛擬機(jī)是在宿主機(jī)之上,又添加了一個新的操作系統(tǒng),這就導(dǎo)致了虛擬機(jī)的臃腫,不適合遷移。而 Docker 是直接寄存在宿主機(jī)上,完全就會避免大部分虛擬機(jī)帶來的困擾。

Docker 是一個黑盒的進(jìn)程,區(qū)別于傳統(tǒng)的進(jìn)程,Docker 可以獨立出一個自己的空間,不會使得在 Docker 中的行為以及變量溢出到宿主機(jī)上。

容器與虛擬機(jī)的各項區(qū)別:

容器與虛擬機(jī)的區(qū)別

Docker 能做什么?

那么,當(dāng)在開發(fā)中使用了 Docker 能為我們帶來哪些便利呢?先來看一張圖。

Docker 使用前后對比

在沒有使用 Docker 時,我們開發(fā)完畢一個項目,需要打成 war 包或 jar 包。然后,在服務(wù)器上進(jìn)行各種環(huán)境的安裝、配置以及應(yīng)用程序維護(hù),比如:JDK、Tomcat、數(shù)據(jù)庫等。

而且,上述的配置在開發(fā)環(huán)境、測試服務(wù)器、生產(chǎn)服務(wù)器(通常會有很多個),都需要進(jìn)行一遍同樣的操作,工作量相當(dāng)繁重。在使用了 Docker 之后,我們可以自己創(chuàng)建一個空的鏡像從頭構(gòu)建,也可以使用公共倉庫中已經(jīng)構(gòu)建好的鏡像,直接使用。當(dāng)需要在不同環(huán)境中進(jìn)行部署時,直接使用構(gòu)建好的鏡像即可,一次構(gòu)建,多環(huán)境多次使用,方便快捷。

Docker 的 6 大優(yōu)勢

對比傳統(tǒng)的運維發(fā)布方式,Docker 有以下 6 大優(yōu)勢:

1、更高效地利用系統(tǒng)資源

Docker 對系統(tǒng)資源的利用率更高。因為容器不用硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件的存儲速度,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)技術(shù),相同配置的主機(jī),往往可以運行更多數(shù)量的應(yīng)用。

2、更快的啟動時間

傳統(tǒng)的虛擬機(jī)技術(shù)啟動應(yīng)用服務(wù)往往是分鐘級別的,而 Docker 由于直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到秒級、甚至毫秒級的啟動時間,大大的節(jié)約了開發(fā)、測試、部署的時間。

3、一致的運行環(huán)境開發(fā)中常見的問題是環(huán)境一致性問題,由于開發(fā)測試生產(chǎn)環(huán)境的不一致,導(dǎo)致有些 bug 沒能在開發(fā)過程中被發(fā)現(xiàn),而 Docker 的鏡像提供了除內(nèi)核外完整的運行時環(huán)境,確保了應(yīng)用運行環(huán)境一致性,從而不會再出現(xiàn)“代碼在我機(jī)器上能跑,這不怪我啊”這類問題。

4、持續(xù)交付和部署對開發(fā)和運維(DevOps)來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行,使用 Docker 可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成、持續(xù)交付、部署。

5、更輕松遷移 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易,Docker 可以在很多平臺上運行,無論是物理機(jī)、虛擬機(jī)、公有云、私有云,甚至是筆記本,其運行結(jié)果是一致的。因此用戶不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況。

6、更輕松的維護(hù)和拓展

Docker 使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡單,基于基礎(chǔ)鏡像進(jìn)一步擴(kuò)展鏡像也變得十分簡單。此外,Docker 團(tuán)隊同各個開源項目團(tuán)隊一起維護(hù)了一大批高質(zhì)量的官網(wǎng)鏡像,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進(jìn)一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。

Docker 的基礎(chǔ)概念

在使用 Docker 時,我們要掌握 Docker 中的一些核心組件及概念。

來看一張 Docker 的架構(gòu)圖:

Docker 架構(gòu)圖

Docker 的基本組成是由鏡像(image)、容器(container)、倉庫(repository)構(gòu)成。

鏡像(image)

Docker 鏡像就是一個只讀的模板,是文件與 meta data 的集合。鏡像是基于分層的實現(xiàn)的,每一層都可以添加刪除文件,從而形成新的鏡像。

鏡像可以理解為是一個樹狀結(jié)構(gòu),每一個鏡像都會依賴于另一個鏡像,這個依賴關(guān)系體現(xiàn)在 Docker 鏡像制作的 Dockerfile 中的 FROM 指令上的。關(guān)于 Dockerfile 及其中的 FROM 指令,需要注意的是:如果是樹的根,那么就需要"FROM scratch"。

鏡像可以用來創(chuàng)建 Docker 容器,一個鏡像可以創(chuàng)建多個容器。

容器(container)

Docker 利用容器獨立運行的一個或一組應(yīng)用。容器是用鏡像創(chuàng)建的運行實例,是在 image 的最后一層上面再添加一層。容器的定義和鏡像幾乎一模一樣,也是一堆層的統(tǒng)一視角,唯一區(qū)別在于容器的最上面那一層是可讀可寫的。

容器與鏡像相對比:鏡像負(fù)責(zé)存儲和分發(fā),容器負(fù)責(zé)運行,它們之間的關(guān)系可以類比 Java 中類和實例的關(guān)系。

容器可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。可以把容器看做是一個簡易版的 Linux 環(huán)境和運行在其中的應(yīng)用程序。

倉庫(repository)

倉庫是集中存放鏡像文件的場所,它有點類似于 Maven/Git 的倉庫,當(dāng)我們需要鏡像文件時,可以從遠(yuǎn)程倉庫中拉取。

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

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。目前最大的公開倉庫是 Docker Hub。

小結(jié)

通過本篇給大家講解了 Docker 的基本使用場景、相關(guān)概念、Docker 能為我們帶來什么、Docker 的優(yōu)勢等,想必大家通過本篇文章已經(jīng)能夠從整體上了解了 Docker 的概況。

總結(jié)

以上是生活随笔為你收集整理的Docker 到底是什么,能干什么?这一篇文章全部给你解释清楚了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。