Docker精华问答 | Docker镜像和Docker容器的关系?
毫無(wú)疑問(wèn),Docker成了近些年來(lái)最火熱,甚至最具顛覆性的技術(shù)之一。國(guó)際上,所有泛云計(jì)算相關(guān)的公司,幾乎都在某種程度上宣布支持并集成Docker。在2014年6月的DockerCon中,很多公司都分享了他們自己如何和Docker集成的故事。
1
Q:什么是Docker鏡像
A:從整體的角度來(lái)講,一個(gè)完整的Docker鏡像可以支撐一個(gè)Docker容器的運(yùn)行,在 Docker容器運(yùn)行過(guò)程中主要提供文件系統(tǒng)視角。例如一個(gè)ubuntu:14.04的鏡像,提供了一個(gè)基本的ubuntu:14.04的發(fā)行版,當(dāng)然此 鏡像是不包含操作系統(tǒng)Linux內(nèi)核的。
以上內(nèi)容是從宏觀的角度看看Docker鏡像是什么,我們?cè)購(gòu)奈⒂^的角度進(jìn)一步深入 Docker鏡像。剛才提到了“Debian鏡像中安裝MySQL 5.6,就成了mysql:5.6鏡像”,其實(shí)在此時(shí)Docker鏡像的層級(jí)概念就體現(xiàn)出來(lái)了。底層一個(gè)Debian操作系統(tǒng)鏡像,上面疊加一個(gè) mysql層,就完成了一個(gè)mysql鏡像的構(gòu)建。層級(jí)概念就不難理解,此時(shí)我們一般debian操作系統(tǒng)鏡像稱為mysql鏡像層的父鏡像。
Docker有兩方面的技術(shù)非常重要,第一是Linux 容器方面的技術(shù),第二是Docker鏡像的技術(shù)。從技術(shù)本身來(lái)講,兩者的可復(fù)制性很強(qiáng),不存在絕對(duì)的技術(shù)難點(diǎn),然而Docker Hub由于存在大量的數(shù)據(jù)的原因,導(dǎo)致Docker Hub的可復(fù)制性幾乎不存在,這需要一個(gè)生態(tài)的營(yíng)造。
Q:Docker鏡像的內(nèi)容
A:介紹之前,我先分享一下,我個(gè)人在接觸Docker的兩年時(shí)間中,對(duì)Docker鏡像內(nèi)容認(rèn)識(shí)的變化。
第一階段:初步接觸Docker。相信很多愛(ài)好者都會(huì)和我一樣,有這樣一個(gè)認(rèn)識(shí):Docker 鏡像代表一個(gè)容器的文件系統(tǒng)內(nèi)容;
第二階段:初步接觸聯(lián)合文件系統(tǒng)。聯(lián)合文件系統(tǒng)的概念,讓我意識(shí)到鏡像層級(jí)管理的技術(shù),每一層鏡像都是容器文件系統(tǒng)內(nèi)容的一部分。
第三階段:研究鏡像與容器的關(guān)系:容器是一個(gè)動(dòng)態(tài)的環(huán)境,每一層鏡像中的文件屬于靜態(tài)內(nèi) 容,然而 Dockerfile 中的 ENV、VOLUME、CMD 等內(nèi)容最終都需要落實(shí)到容器的運(yùn)行環(huán)境中,而這些內(nèi)容均不可能直接坐落到每一層鏡像所包含的文件系統(tǒng)內(nèi)容中,那此時(shí)每一個(gè)Docker鏡像還會(huì)包含 json文件記錄與容器之間的關(guān)系。
因此,Docker鏡像的內(nèi)容主要包含兩個(gè)部分:第一,鏡像層文件內(nèi)容;第二,鏡像json文件。
Q:Dockerfile、Docker鏡像和Docker容器的關(guān)系
A:Dockerfile 是軟件的原材料,Docker 鏡像是軟件的交付品,而 Docker 容器則可以認(rèn)為是軟件的運(yùn)行態(tài)。從應(yīng)用軟件的角度來(lái)看,Dockerfile、Docker 鏡像與 Docker 容器分別代表軟件的三個(gè)不同階段,Dockerfile 面向開發(fā),Docker 鏡像成為交付標(biāo)準(zhǔn),Docker 容器則涉及部署與運(yùn)維,三者缺一不可,合力充當(dāng) Docker 體系的基石。
簡(jiǎn)單來(lái)講,Dockerfile構(gòu)建出Docker鏡像,通過(guò)Docker鏡像運(yùn)行Docker容器。
Q:為什么一個(gè)ubuntu:14.04鏡像的鏡像層的數(shù)量是4個(gè),前三層的內(nèi)容似乎有相同的,如etc?
A:雖然三層 都有,但是會(huì)存在兩種情況,etc的子目錄下有相同路徑的文件,那么上層的會(huì)覆蓋下層的文件;如果內(nèi)部的文件路徑不相同,那么都會(huì)存在,都會(huì)呈現(xiàn)給最上層。
5
Q:如何保證僅有的一個(gè)deamon的穩(wěn)定性健壯性?
A:分布式系統(tǒng)需要大量機(jī)器協(xié)作,面臨諸多的挑戰(zhàn):
第一,異構(gòu)的機(jī)器與網(wǎng)絡(luò):
分布式系統(tǒng)中的機(jī)器,配置不一樣,其上運(yùn)行的服務(wù)也可能由不同的語(yǔ)言、架構(gòu)實(shí)現(xiàn),因此處理能力也不一樣;節(jié)點(diǎn)間通過(guò)網(wǎng)絡(luò)連接,而不同網(wǎng)絡(luò)運(yùn)營(yíng)商提供的網(wǎng)絡(luò)的帶寬、延時(shí)、丟包率又不一樣。怎么保證大家齊頭并進(jìn),共同完成目標(biāo),這四個(gè)不小的挑戰(zhàn)。
第二,普遍的節(jié)點(diǎn)故障:
雖然單個(gè)節(jié)點(diǎn)的故障概率較這個(gè)問(wèn)題首先需要知道docker daemon的穩(wěn)定性在哪些方面,那種場(chǎng)景下比較差?的確,docker daemon存在弊病。比如,daemon和容器的耦合等,目前general來(lái)講,docker daemon保證絕對(duì)的穩(wěn)定應(yīng)該還做不到。
小伙伴們沖鴨,后臺(tái)留言區(qū)等著你!
關(guān)于Docker,今天你學(xué)到了什么?還有哪些不懂的?除此還對(duì)哪些話題感興趣?快來(lái)留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時(shí)歡迎大家搜集更多問(wèn)題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~
福利
1、掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
一場(chǎng)全能的開發(fā)者大會(huì),來(lái)自助力開發(fā)者成功進(jìn)階的華為云
抖音微博等短視頻千萬(wàn)級(jí)高可用、高并發(fā)架構(gòu)如何設(shè)計(jì)?
20大5G關(guān)鍵技術(shù)
Fast.ai:從零開始學(xué)深度學(xué)習(xí) | 資源帖
10個(gè)簡(jiǎn)單小竅門帶你提高Python數(shù)據(jù)分析速度(附代碼)
程序員爬取 3 萬(wàn)條評(píng)論,《長(zhǎng)安十二時(shí)辰》槽點(diǎn)大揭秘!
暗網(wǎng)竟成比特幣最大用戶? 上半年5.15億美元被用于非法活動(dòng)
真香,朕在看了!
總結(jié)
以上是生活随笔為你收集整理的Docker精华问答 | Docker镜像和Docker容器的关系?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 复联票房超阿凡达 创首轮公映票房最高
- 下一篇: 数据可视化图表,你选对了吗?