【Docker】【基礎(chǔ)入門知識

      網(wǎng)友投稿 866 2025-04-02

      一、docker介紹


      docker是一個快速交付、開發(fā)和運行應(yīng)用程序的平臺。

      【Docker】【基礎(chǔ)】入門知識

      docker提供一個獨立的運行應(yīng)用程序環(huán)境,應(yīng)用程序不依賴其環(huán)境就可以部署運行應(yīng)用程序,可以將業(yè)務(wù)程序和基礎(chǔ)架構(gòu)進(jìn)行隔離,具有隔離性。隔離原理是底層利用linux內(nèi)核命名空間namespaces和cgroups功能來達(dá)到容器工作空間的隔離性。

      docker通過快速交付、測試和部署代碼的方法,可以減少編寫代碼和生產(chǎn)環(huán)境運行程序的時延。

      docker具有隔離性和安全性,并且docker是輕量級的,因此可以運行多個docker容器,并且還可以設(shè)置共享容器與其他容器進(jìn)行交互(后面有專門的kubernetes解決應(yīng)用容器之間相互發(fā)現(xiàn)和訪問的問題)。

      docker提供了工具和平臺來管理容器的生命周期:

      使用容器來開發(fā)應(yīng)用程序和組件

      使用容器分發(fā)和測試應(yīng)用程序

      上面都準(zhǔn)備好了之后,就可以將應(yīng)用程序部署到生產(chǎn)環(huán)境中。

      二、docker作用優(yōu)點

      1. 快速、一致性的交付應(yīng)用程序

      場景:

      本地開發(fā)代碼,并使用docker容器與其他同事共享工作

      本地開發(fā)完之后,使用docker將應(yīng)用程序打包成鏡像推送到測試環(huán)境中,并執(zhí)行自動和手動測試。

      當(dāng)開發(fā)發(fā)現(xiàn)bug的時候,先在開發(fā)環(huán)境中修復(fù),然后使用docker重新部署到測試環(huán)境進(jìn)行測試和驗證。

      測試完成之后,使用docker將修改好的鏡像推送到生產(chǎn)環(huán)境。

      2. 響應(yīng)式部署和拓展

      docker具有可移植性和輕量級特性,可以實時根據(jù)業(yè)務(wù)需求拓展和拆除應(yīng)用程序和服務(wù)

      3. 同一臺機(jī)器上運行多個docker容器

      docker具有輕量級和快速特性,可以使用很少的資源完成更多的工作

      三、docker架構(gòu)

      docker使用client-server的架構(gòu)模式,也就是docker客戶端(簡稱docker)與docker守護(hù)進(jìn)程(簡稱dockerd)之間進(jìn)行通信的一個架構(gòu)。

      守護(hù)進(jìn)程dockerd完成docker容器的創(chuàng)建、分發(fā)和運行docker容器的繁重工作。

      客戶端docker和守護(hù)進(jìn)程dockerd可以在同一系統(tǒng)或同一臺機(jī)器運行,也可以在不同系統(tǒng)或不同機(jī)器上運行(docker遠(yuǎn)程連接到dockerd),它們是怎么進(jìn)行通信的呢?docker與dockerd是通過使用RESTAPI、UnixSocket或網(wǎng)絡(luò)接口進(jìn)行通信的。

      基本架構(gòu)圖:

      基本流程說明:

      當(dāng)docker用戶在docker客戶端運行docker pull命令時,該命令發(fā)送到守護(hù)進(jìn)程dockerd中,dockerd會從Registry倉庫中拉取指定鏡像到本地images中。

      當(dāng)docker用戶在docker客戶端運行docker build命令時,該命令發(fā)送到守護(hù)進(jìn)程dockerd中,dockerd將本地images中指定的鏡像編譯好,以供使用。

      當(dāng)docker用戶在docker客戶端運行docker run命令時,該命令發(fā)送到守護(hù)進(jìn)程dockerd中,dockerd會在本地images將指定編譯好的鏡像在指定的容器中運行起來。

      基本概念解釋:

      docker守護(hù)進(jìn)程(dockerd)

      守護(hù)進(jìn)程dockerd其實就是docker服務(wù),主要是監(jiān)聽客戶端Docker的API請求,管理docker鏡像、docker容器、networks網(wǎng)絡(luò)、volumes存儲卷等;docker守護(hù)進(jìn)程還可以與其他守護(hù)進(jìn)程進(jìn)行通信一起管理docker服務(wù),組成一個dockerd集群,為客戶端docker提供服務(wù)。

      docker客戶端(docker)

      客戶端docker是docker用戶與docker的交互主要方式,如當(dāng)docker用戶執(zhí)行docker run命令時,docker將這些命令發(fā)送到dockerd,在dockerd上執(zhí)行該命令。

      docker命令使用Docker API,docker客戶端可以與多個守護(hù)進(jìn)程dockerd通信。

      docker注冊中心(Registry)

      docker注冊中心registry,可以包含多個倉庫(Repository),每個倉庫可以包含多個標(biāo)簽(Tag),每個標(biāo)簽對應(yīng)一個鏡像,簡單來說就是專門存放Docker鏡像的地方,docker有個公共倉庫叫Docker Hub,提供每個人使用,dockerd默認(rèn)配置了Docker Hub為默認(rèn)查找鏡像的倉庫,當(dāng)然也可以配置自己的私人倉庫。

      當(dāng)docker用戶在docker客戶端運行docker pull 或 docker run命令時,請求的鏡像將從你配置的registry倉庫拉取。

      當(dāng)docker用戶在docker客戶端運行docker push命令時,會將鏡像推送至你配置的registry倉庫中。

      docker對象

      docker中包含很多對象:鏡像images,容器containers,網(wǎng)絡(luò)networks,存儲卷volumes,插件plugins,還有其他的一些對象等等。

      1. docker鏡像(images)

      鏡像images只是一個描述怎么創(chuàng)建Docker容器的只讀模板;通常一個鏡像是基于另一個鏡像并進(jìn)行額外的自定義配置;例如,你可以構(gòu)建基于ubuntu的鏡像,并且可以在鏡像中安裝Apache web服務(wù)器和應(yīng)用程序,以及使應(yīng)用程序運行所需的詳細(xì)配置信息等等,每個dockerd都有一個本地images,存放自己制作的鏡像或者從別的倉庫拉取過來的鏡像。

      可以創(chuàng)建自己的鏡像,也可以直接使用倉庫里面別人發(fā)布的鏡像。

      想要創(chuàng)建自己的鏡像,需要的步驟為:

      創(chuàng)建一個dockerfile文件。

      使用簡單的語法定義創(chuàng)建、運行鏡像所需的指令步驟。

      dockerfile文件中的每條指令都會在images中創(chuàng)建一個layer,當(dāng)改變dockerfile文件并重新編譯鏡像時,只是改變并重建images中的layer,這就是制作鏡像如此輕、小、快速的原因之一。

      2. docker容器

      容器是鏡像的可運行實例,簡單來說就是計算機(jī)上的另一個進(jìn)程,與宿主機(jī)上的其他進(jìn)程隔離。

      可以使用Docker API或CLI創(chuàng)建、啟動、停止、移動或刪除容器,可以將容器連接到一個或多個網(wǎng)絡(luò)并附加存儲卷給它,甚至還可以根據(jù)當(dāng)前容器的狀態(tài)創(chuàng)建一個新鏡像。

      默認(rèn)情況下,容器與容器之間以及容器與宿主機(jī)之間是存在比較好的隔離環(huán)境的,你可以控制容器的網(wǎng)絡(luò)、存儲卷與其他容器或宿主機(jī)的隔離程度。

      容器的定義是由鏡像決定的,當(dāng)創(chuàng)建或者運行一個容器時,需要在鏡像文件中提供好所有的配置信息;刪除容器的時候,沒有保存容器狀態(tài)的更改都會消失。

      例如,運行一個docker容器命令docker run ?-i -t ubuntu /bin/bash .,運行一個ubuntu容器并運行/bin/bash .會執(zhí)行以下步驟:

      守護(hù)進(jìn)程檢查本地有沒有ubuntu鏡像,如果沒有,docker會從配置的倉庫中提取它,就像手動運行docker pull ubuntu一樣。

      docker會創(chuàng)建一個新容器,就像手動執(zhí)行命令docker container create。

      docker分配一個讀寫文件系統(tǒng)給容器,允許正在運行的容器在該文件系統(tǒng)創(chuàng)建和修改文件或目錄。

      docker創(chuàng)建一個網(wǎng)絡(luò)接口將容器連接到默認(rèn)網(wǎng)絡(luò),如果沒有指定任何的網(wǎng)絡(luò)配置,docker會為容器自動分配IP地址,并且默認(rèn)可以使用宿主機(jī)的網(wǎng)絡(luò)連接連接到外部網(wǎng)絡(luò)。

      上面完成之后,docker啟動容器并執(zhí)行/bin/bash .,并以交互方式運行且連接到本地終端(-i和-t參數(shù)),可以從鍵盤輸入,同時輸出記錄到終端

      當(dāng)輸入exit命令時,將終止/bin/bash命令,容器將停止,但不會被刪除,可以再次啟動或刪除它

      3.?docker倉庫(Repository)

      上面也說了一個docker Registry注冊中心可以包含多個倉庫Repository,一個Repository包含多個標(biāo)簽Tag,一個標(biāo)簽Tag對應(yīng)一個鏡像,同一個Repository下的多個Tag就是指的是同一個軟件不同版本的鏡像,通過<倉庫名>:<標(biāo)簽>的格式來指定具體軟件版本,如果不給出標(biāo)簽,就以latest作為默認(rèn)標(biāo)簽。在docker注冊中心多用戶環(huán)境下倉庫名經(jīng)常以兩段式路徑出現(xiàn):用戶名/軟件名。

      問題:鏡像與容器的區(qū)別

      鏡像就是運行容器實例的一個模板,鏡像包含運行容器實例的環(huán)境配置信息和應(yīng)用程序。

      容器就是鏡像的一個運行實例,可以基于鏡像創(chuàng)建多個實例,每個實例都是獨立運行的。

      Docker 容器

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:erp生產(chǎn)管理系統(tǒng)(生產(chǎn)管理系統(tǒng))
      下一篇:excel表格如何截屏
      相關(guān)文章
      日韩亚洲综合精品国产| 亚洲成人激情小说| 亚洲日韩精品无码专区加勒比| 国产日韩成人亚洲丁香婷婷| 亚洲老熟女@TubeumTV| 久久精品国产96精品亚洲| 亚洲热妇无码AV在线播放| 最新亚洲成av人免费看| 中国亚洲女人69内射少妇| 亚洲色偷拍区另类无码专区| 亚洲伦乱亚洲h视频| 相泽亚洲一区中文字幕| 亚洲人成色77777在线观看大| 亚洲成aⅴ人片久青草影院| 国产精品亚洲а∨无码播放麻豆| 免费亚洲视频在线观看| 亚洲?V无码乱码国产精品| 亚洲精品高清在线| 国产亚洲自拍一区| 亚洲精品自在在线观看| 久热综合在线亚洲精品| 亚洲人成国产精品无码| 国产偷国产偷亚洲清高动态图| 在线观看亚洲精品国产| 亚洲精品中文字幕无码蜜桃| 久久久亚洲精品视频| 91亚洲国产在人线播放午夜| 亚洲成a人片在线网站| 激情内射亚洲一区二区三区爱妻 | 亚洲av乱码中文一区二区三区| 亚洲第一成年免费网站| 国产午夜亚洲精品不卡| 久久久久亚洲AV无码专区桃色| 亚洲人色婷婷成人网站在线观看| 国产成人亚洲精品无码AV大片| 亚洲国产精品嫩草影院久久| 自拍偷自拍亚洲精品情侣| 亚洲AV无码国产精品色午友在线| 久久亚洲精品无码VA大香大香| 亚洲国产av一区二区三区丶| 91丁香亚洲综合社区|