在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Docker容器

汽車電子技術(shù) ? 來(lái)源:碼農(nóng)與軟件時(shí)代 ? 作者:碼農(nóng)與軟件時(shí)代 ? 2023-02-20 16:16 ? 次閱讀

1.軟件開發(fā)面臨的那些****問題

程序員根據(jù)需求和架構(gòu)設(shè)計(jì)翻譯出業(yè)務(wù)邏輯之后,為保證正常轉(zhuǎn)測(cè),打包代碼并編寫轉(zhuǎn)測(cè)說(shuō)明書。

選定合適的服務(wù)器和操作系統(tǒng),并通過SSH連接服務(wù)器,進(jìn)行手動(dòng)升級(jí):安裝Web容器或數(shù)據(jù)庫(kù)、部署軟件APP以及配置環(huán)境。開發(fā)內(nèi)部測(cè)試,如果發(fā)現(xiàn)新問題需要進(jìn)行修復(fù),則再次連接服務(wù)器,升級(jí)相應(yīng)的版本和配置環(huán)境的變更點(diǎn)。如未發(fā)現(xiàn)問題,則通過后轉(zhuǎn)交測(cè)試人員。

測(cè)試重復(fù)開發(fā)類似的部署動(dòng)作,測(cè)試通過,版本發(fā)布;運(yùn)維人員拿到版本發(fā)布包后,重復(fù)測(cè)試的部署動(dòng)作。

圖片

這種重復(fù)的工作就像雙11雜亂的快遞不斷分揀的過程:

圖片

如果有集裝箱的話,只要開發(fā)集中裝箱一次,測(cè)試、運(yùn)維就可以直接用了。

圖片

2.Docker是什么?

要將安裝好的開發(fā)環(huán)境打成包,能夠切換到測(cè)試環(huán)境、生產(chǎn)環(huán)境,實(shí)現(xiàn)“一次打包,到處運(yùn)行”的目標(biāo),就需要實(shí)現(xiàn):

(1)將開發(fā)環(huán)境原汁原味地打包。

(2)讓應(yīng)用程序認(rèn)為自己擁有“整個(gè)天下”。

針對(duì)第一個(gè)實(shí)現(xiàn)目標(biāo):將開發(fā)環(huán)境原汁原味地打包。

回顧開發(fā)環(huán)境的安裝過程:先安裝操作系統(tǒng)、再安裝JDK環(huán)境、再裝Web Server、再部署應(yīng)用程序。整個(gè)安裝過程是在操作系統(tǒng)上一層一層安裝起來(lái),到最后整個(gè)環(huán)境是各層安裝之后的累加結(jié)果。

《初識(shí)Docker鏡像》一文中介紹了Linux操作系統(tǒng)、UnionFS聯(lián)合文件系統(tǒng),UnionFS可實(shí)現(xiàn)將多個(gè)文件系統(tǒng)的目錄或者文件合并成一個(gè)“統(tǒng)一的文件系統(tǒng)”,掛載到某個(gè)目錄(掛載點(diǎn))下。

針對(duì)第二個(gè)實(shí)現(xiàn)目標(biāo):讓應(yīng)用程序認(rèn)為自己擁有“整個(gè)天下”。

進(jìn)一步解釋,讓應(yīng)用程序認(rèn)為自己擁有獨(dú)立的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)。這里需要使用命名空間NameSpace技術(shù)。Linux命名空間是Linux內(nèi)核中實(shí)現(xiàn)的虛擬化機(jī)制,可以將系統(tǒng)資源劃分成多個(gè)獨(dú)立的空間,每個(gè)空間中的進(jìn)程邏輯上互相隔離,彼此不影響。

如何讓應(yīng)用程序認(rèn)為擁有整個(gè)文件系統(tǒng)?使用chroot技術(shù)。chroot 是一種修改當(dāng)前進(jìn)程及其子進(jìn)程的可見根目錄的操作。修改后,進(jìn)程將不能訪問該根目錄樹以外的任何文件和命令,這種修改后的環(huán)境叫作chroot jail(直譯為chroot監(jiān)獄)。

如何保證應(yīng)用程序使用有限的資源,從而不擠爆整個(gè)宿主機(jī)?使用cgroup技術(shù)。

cgroup也是Linux內(nèi)核實(shí)現(xiàn)的,可以對(duì)進(jìn)程的CPU 時(shí)間、系統(tǒng)內(nèi)存、網(wǎng)絡(luò)帶寬等資源進(jìn)行分配。

2008年,Linux Container(簡(jiǎn)稱LXC),整合了cgroups和Namespace技術(shù),并合入到Linux內(nèi)核v2.6.27中。

2013年,Docker公司基于Linux Container開發(fā),并借助于UnionFS,實(shí)現(xiàn)了Docker容器技術(shù)。

3.Docker是如何運(yùn)轉(zhuǎn)的?

有了上面可用的技術(shù),還需要做一些約定:

(1)將運(yùn)行環(huán)境所對(duì)應(yīng)的文件系統(tǒng)打成的包,稱為鏡像(Image);

(2)將應(yīng)用程序運(yùn)行起來(lái)的進(jìn)程,稱為容器(Container);

(3)將存放鏡像的地方,稱為Repository(倉(cāng)庫(kù))。

有了這些約定,就可以構(gòu)建一個(gè)容器的管理程序,用來(lái):

(1)將環(huán)境打包成鏡像;

(2)上傳、下載鏡像到倉(cāng)庫(kù);

(3)運(yùn)行容器,容器也可以提交為鏡像;

圖片

容器的管理程序采用C/S架構(gòu),服務(wù)端稱為docker daemon,后端關(guān)聯(lián)倉(cāng)庫(kù)。客戶端是命令行工具。

圖片

4. Docker Daemon是如何演進(jìn)****的?

上文中展示的Docker Daemon服務(wù)端,從Docker v1.11版本開始,便進(jìn)行拆分重構(gòu),如圖所示。

圖片

包含如下組件:

(1)runc: 負(fù)責(zé)容器的創(chuàng)建、刪除等生命周期管理。后面詳細(xì)介紹。

(2)Containerd-shim: 是一個(gè)守護(hù)進(jìn)程,與Containerd一一對(duì)應(yīng),并向其提供管理容器生命周期的API,也可以向Containerd 報(bào)告容器的退出狀態(tài)。向下,在runc運(yùn)行容器之后并退出,containerd-shim作為容器的父進(jìn)程。這樣可以重啟Containerd,而不會(huì)對(duì)運(yùn)行中的容器產(chǎn)生影響。

(3)Containerd:

containerd是一個(gè)守護(hù)進(jìn)程,負(fù)責(zé)監(jiān)聽傳入的請(qǐng)求以進(jìn)行容器的生命周期管理(啟動(dòng)、停止或報(bào)告容器的狀態(tài)),同時(shí),也負(fù)責(zé)鏡像的管理(上傳、下載到倉(cāng)庫(kù),本地保存鏡像等功能),以及跨容器的網(wǎng)絡(luò)管理。

(4)dockerd: 也就是docker daemon,是一個(gè)守護(hù)進(jìn)程。提供docker pull、docker push、docker run等命令接口,并將接口轉(zhuǎn)換為containerd API以調(diào)用containerd。同時(shí),提供容器編排功能。

下面詳細(xì)分析runC和containerd兩個(gè)組件。

首先來(lái)看runC。 Docker的底層技術(shù)是Namespace和Cgroup,LXC組合了這兩種技術(shù),為運(yùn)行應(yīng)用程序提供了“隔離”的環(huán)境,這些都已經(jīng)合入到Linux內(nèi)核。

最初Docker基于LXC進(jìn)行開發(fā),因存在強(qiáng)綁定問題,而重新開發(fā)了libcontainer。

后來(lái)因Docker成為事實(shí)標(biāo)準(zhǔn),且不開放,影響到生態(tài)建設(shè)(影響了Google、微軟的發(fā)展)。在Linux基金會(huì)的參與下,Docker發(fā)起OCI組織,起草了OCI標(biāo)準(zhǔn):

(1)容器運(yùn)行時(shí)標(biāo)準(zhǔn)(runtime spec):定義了如何根據(jù)相應(yīng)的配置構(gòu)建容器運(yùn)行時(shí),也就是指定了容器的配置、執(zhí)行環(huán)境和生命周期。

圖片

(2)容器鏡像標(biāo)準(zhǔn)(image spec):定義了容器運(yùn)行時(shí)所使用的鏡像打包規(guī)范,也就是指定了文件系統(tǒng)標(biāo)準(zhǔn)包bundle的格式。

總的來(lái)說(shuō),OCI標(biāo)準(zhǔn)指定了容器運(yùn)行所需要的bundle和配置信息。

Docker公司根據(jù)OCI容器運(yùn)行時(shí)標(biāo)準(zhǔn),將libcontainer進(jìn)行了二次封裝形成新的項(xiàng)目,改為RunC,作為參考實(shí)現(xiàn)捐給社區(qū)。需要說(shuō)明的是RunC項(xiàng)目實(shí)現(xiàn)了從定義的容器標(biāo)準(zhǔn)包運(yùn)行容器,而沒有實(shí)現(xiàn)下載鏡像并將解析成標(biāo)準(zhǔn)包。

再來(lái)看containerd。

2016年12月,Docker公司將其拆分為獨(dú)立組件(守護(hù)進(jìn)程),并于2017年3月捐贈(zèng)給CNCF。

其架構(gòu)如下圖所示。

圖片

containerd分為三個(gè)大塊:Storage、Metadata和Runtimes。其中,Storage 負(fù)責(zé)鏡像的存儲(chǔ)、管理和拉取;Metadata用來(lái)管理容器及鏡像的元數(shù)據(jù),Runtimes用來(lái)對(duì)接runc。

containerd捐給社區(qū)后,形成一個(gè)龐大的生態(tài):

圖片

參考資料

1. 容器運(yùn)行時(shí)規(guī)范:https://github.com/opencontainers/runtime-spec2. 容器鏡像規(guī)范:https://github.com/opencontainers/image-spec3. https://containerd.io/4.https://github.com/containerd/containerd/blob/main/docs/getting-started.md5.https://mp.weixin.qq.com/s/yIuGm92sshYOZAcIpmu9Ag6.https://www.zhangjiee.com/blog/2021/container-runtime.html
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9717

    瀏覽量

    87388
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7103

    瀏覽量

    125055
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    194

    瀏覽量

    16824
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3568-Docker容器部署方法說(shuō)明

    RK3568-Docker容器部署方法說(shuō)明
    的頭像 發(fā)表于 01-22 10:12 ?1820次閱讀
    RK3568-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說(shuō)明

    TLT507-Docker容器部署方法說(shuō)明

    TLT507-Docker容器部署方法說(shuō)明
    的頭像 發(fā)表于 01-26 09:49 ?651次閱讀
    TLT507-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說(shuō)明

    使用Windows中的Docker容器運(yùn)行DL Streamer出現(xiàn)報(bào)錯(cuò)怎么解決?

    使用 Windows* 中的 Docker 容器運(yùn)行 DL Streamer。 遇到錯(cuò)誤: gi.repository.GLib.GError: gst_parse_error: 無(wú)元素 “vaapih264enc” (1)
    發(fā)表于 03-05 07:04

    請(qǐng)問docker容器如何添加自定義hosts?

    docker容器添加自定義hosts的方案有哪些?docker容器添加自定義hosts的錯(cuò)誤示例
    發(fā)表于 11-05 06:20

    請(qǐng)問docker容器如何查看日志?

    docker容器如何查看日志
    發(fā)表于 11-19 07:29

    Docker容器管理命令(一)

    1、Docker容器管理命令的使用方法查看當(dāng)前主機(jī)本地docker鏡像:啟動(dòng)容器必須依賴鏡像,所以要獲取到鏡像的唯一標(biāo)識(shí)docker
    發(fā)表于 04-20 17:55

    Docker容器管理命令(二)

    1、Docker容器管理命令的使用方法批量刪除docker 容器docker cp命令docker
    發(fā)表于 04-21 11:31

    學(xué)習(xí)管理 docker 容器的一些命令

    在本教程中,我們會(huì)學(xué)習(xí)管理 docker 容器的一些命令。
    的頭像 發(fā)表于 01-22 11:56 ?4472次閱讀

    集成Docker容器的OpenStack云平臺(tái)性能研究

    針對(duì)OpenStack云平臺(tái)虛擬機(jī)未能較好利用宿主物理機(jī)資源的問題,結(jié)合基于組件工作的OpenStack在云平臺(tái)管理中的高效性和Docker容器虛擬化的快速部署優(yōu)勢(shì),搭建基于Docker容器
    發(fā)表于 01-26 15:32 ?0次下載
    集成<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>的OpenStack云平臺(tái)性能研究

    學(xué)習(xí) Docker 容器的 8 個(gè)命令分享

    利用這 8 個(gè)命令可以學(xué)習(xí) Docker 容器的基本管理方式。這是一個(gè)為 Docker 初學(xué)者準(zhǔn)備的,帶有示范命令輸出的指南。
    發(fā)表于 06-22 12:03 ?1526次閱讀
    學(xué)習(xí) <b class='flag-5'>Docker</b> <b class='flag-5'>容器</b>的 8 個(gè)命令分享

    AM5708平臺(tái)移植ubuntu系統(tǒng)和docker容器

    AM5708平臺(tái)移植ubuntu系統(tǒng)和docker容器
    發(fā)表于 11-01 08:26 ?2次下載
    AM5708平臺(tái)移植ubuntu系統(tǒng)和<b class='flag-5'>docker</b><b class='flag-5'>容器</b>

    NAS下可搭建的docker容器整理

    又到了整理匯總的時(shí)間了,本期依然是針對(duì)NAS下可搭建的一些docker容器的匯總,涉及可能會(huì)有介紹過的容器!!!也歡迎留言你發(fā)現(xiàn)的一些有趣的或者有用的容器推薦。
    的頭像 發(fā)表于 02-03 16:26 ?5228次閱讀
    NAS下可搭建的<b class='flag-5'>docker</b><b class='flag-5'>容器</b>整理

    如何在Docker容器中運(yùn)行Nginx

    在本教程中,您將學(xué)習(xí)如何將 Nginx 作為 Docker 容器運(yùn)行,并將其公開給您的本地網(wǎng)絡(luò)。此外,您將學(xué)習(xí)如何創(chuàng)建 Docker 數(shù)據(jù)卷以在容器和主機(jī)文件系統(tǒng)之間共享信息。
    的頭像 發(fā)表于 02-17 09:30 ?2280次閱讀

    docker容器刪除后數(shù)據(jù)還在嗎

    Docker作為一個(gè)容器化平臺(tái),提供了輕量級(jí)的虛擬化解決方案,能夠方便地創(chuàng)建、部署和管理應(yīng)用程序。然而,對(duì)于Docker容器的數(shù)據(jù)持久性是一個(gè)令人關(guān)注的問題。當(dāng)我們刪除一個(gè)
    的頭像 發(fā)表于 11-23 09:32 ?2452次閱讀

    docker容器容器之間通信

    Docker是一種輕量級(jí)容器化技術(shù),能夠?qū)?yīng)用程序及其依賴項(xiàng)封裝在一個(gè)獨(dú)立、可移植的容器中。而容器化的應(yīng)用程序通常是以分布式方式設(shè)計(jì)的,因此實(shí)現(xiàn)容器
    的頭像 發(fā)表于 11-23 09:36 ?1924次閱讀
    主站蜘蛛池模板: 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 久久狼人综合 | 丁香伊人五月综合激激激 | 四虎影院台湾辣妹 | 日本色黄 | 免费三级毛片 | 亚洲国产激情在线一区 | 伊人久久大香线蕉综合7 | 四虎成人免费网站在线 | 59日本人xxxxxxxxx69| 欧美日韩一区不卡 | 高清不卡毛片免费观看 | 免费播放视频 | 久久精品亚洲精品国产色婷 | 天堂在线最新版www中文 | 午夜小视频男女在线观看 | 全黄色一级片 | 婷婷久久综合九色综合九七 | 天天射干 | 三级免费黄色片 | 啪啪免费视频 | 国产精品免费一级在线观看 | 又黄又爽又猛大片录像 | 久久久xxx | 深爱婷婷激情网 | 日本免费不卡一区 | 男男生子大肚play做到生 | 日本免费人成黄页网观看视频 | 日本免费在线 | 色多多福利网站老司机 | 黄色一区二区三区 | 亚洲性影院| 日本三级精品 | 毛片毛片| 手机看片福利在线 | 成人午夜网址 | 68日本xxxxxxx18| 美女视频永久黄网站免费观看国产 | 日本三级日产三级国产三级 | 国产激烈无遮挡免费床戏视频 | yy6080理aa级伦大片一级 |