摘要:一為什么需要官方介紹中文版是世界領(lǐng)先的軟件容器平臺(tái)。其實(shí)這篇文章主要是講為什么我們需要在學(xué)習(xí)一項(xiàng)技術(shù)之前,必須要知道這項(xiàng)技術(shù)是用來(lái)干嘛的,的一些概念和命令我還沒介紹留到下一篇啦。
前言
只有光頭才能變強(qiáng)。
文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y
估計(jì)大家也可能聽過(guò)Docker這項(xiàng)技術(shù)(在論壇上、招聘技能上、交流群上等等),要是不了解Docker,都不好意思在網(wǎng)上沖浪的時(shí)候吹牛逼了。
所以這幾天學(xué)了一下Docker,總結(jié)了Docker入門的相關(guān)知識(shí),分享給大家(好讓我們一起吹牛逼)。
I need a doctor,call me a doctor. I need a doctor, doctor, to bring me back to life .一、為什么需要Docker
官方介紹(中文版):http://www.docker-cn.com/what-docker#/developers
Docker 是世界領(lǐng)先的軟件容器平臺(tái)。1.1環(huán)境(切換/配置)麻煩
開發(fā)人員利用 Docker 可以消除協(xié)作編碼時(shí)“在我的機(jī)器上可正常工作”的問題。
運(yùn)維人員利用 Docker 可以在隔離容器中并行運(yùn)行和管理應(yīng)用,獲得更好的計(jì)算密度。
企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽(yù)為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能。
一般我們寫程序的,能接觸到好幾個(gè)環(huán)境:
自己寫代碼的環(huán)境叫做開發(fā)環(huán)境。
給測(cè)試去跑的環(huán)境叫做測(cè)試環(huán)境。
測(cè)試完可以對(duì)外使用的叫做生產(chǎn)環(huán)境。
其實(shí)我們?cè)趯W(xué)習(xí)編程中,很多時(shí)間都浪費(fèi)在“環(huán)境”上:
如果我現(xiàn)在重裝了系統(tǒng),我想要跑我的war/jar包,我得去安裝一下JDK、Tomcat、MySQL等配置各種的環(huán)境變量才能跑起來(lái)。
開開心心地跟著博主給出的步驟去寫Demo,但總是有Bug。(這里我將版本/依賴也歸納在環(huán)境的范疇里邊)。
好不容易在測(cè)試環(huán)境下跑起來(lái)了,在生產(chǎn)環(huán)境就各種出錯(cuò)!
跟著教學(xué)視頻做分布式/集群的項(xiàng)目,跑一堆的虛擬機(jī),每個(gè)虛擬機(jī)都要安裝對(duì)應(yīng)的環(huán)境。
所以就有個(gè)笑話《千萬(wàn)不要跟程序員說(shuō),你的代碼有bug》:
他的第一反應(yīng)是你的環(huán)境有問題,第二就是你是傻逼不會(huì)用吧。
你要跟他這么說(shuō):“這個(gè)程序運(yùn)行的怎么運(yùn)行的跟預(yù)期不一樣,是我操作有問題嗎?”。
這貨就會(huì)第一反應(yīng)“我擦,這是不是出bug了?”
1.2應(yīng)用之間需要隔離比如我寫了兩個(gè)應(yīng)用(網(wǎng)站),這兩個(gè)應(yīng)用部署在同一臺(tái)服務(wù)器上,那可能會(huì)出現(xiàn)什么問題?
如果一個(gè)應(yīng)用出現(xiàn)了問題,導(dǎo)致CPU占100%。那另一個(gè)應(yīng)用也會(huì)受到關(guān)聯(lián),跟著一起涼涼了。
這兩個(gè)應(yīng)用是完全不同技術(shù)棧的應(yīng)用,比如一個(gè)PHP,一個(gè).NET。這兩個(gè)應(yīng)用各種的依賴軟件都安裝在同一個(gè)服務(wù)器上,可能就會(huì)造成各種沖突/無(wú)法兼容,這可能調(diào)試就非常麻煩了。
二、Docker是如何解決上述的問題的 2.1解決環(huán)境(切換/配置)不知道大家有沒有裝過(guò)系統(tǒng),比如說(shuō)裝Linux虛擬機(jī),重裝Windows系統(tǒng),都是需要鏡像的。
有了這個(gè)鏡像,我們就可以運(yùn)行這個(gè)鏡像,來(lái)進(jìn)行安裝系統(tǒng)的操作(此處省略N個(gè)下一步),于是我們的系統(tǒng)就裝好了。一般來(lái)說(shuō),我們?nèi)ス俜角老螺d的鏡像,都是純凈的。比如去官方下載Windows鏡像,裝完后之后桌面只有一個(gè)回收站。
但有過(guò)了解裝系統(tǒng)的同學(xué)可能就會(huì)知道,有的鏡像裝完可能還有360這些軟件,但系統(tǒng)的的確確是變了。簡(jiǎn)單來(lái)說(shuō),就是這些鏡像添加了其他的東西(比如360軟件、騰訊、千千靜聽等等軟件)。
Docker也是這種思路,可以將我們的想要的環(huán)境構(gòu)建(打包)成一個(gè)鏡像,然后我們可以推送(發(fā)布)到網(wǎng)上去。想要用這個(gè)環(huán)
境的時(shí)候,在網(wǎng)上拉取一份就好了。
有了Docker,我們?cè)诖瞽h(huán)境的時(shí)候,跟以前的方式就不一樣了。
之前:在開發(fā)環(huán)境構(gòu)建出了一個(gè)war包,想跑到Linux下運(yùn)行。我們得先在Linux下載好Java、Tomcat、MySQL,配置好對(duì)應(yīng)的環(huán)境變量,將war包丟到Tomcat的webapps文件夾下,才能跑起來(lái)。
現(xiàn)在:在Linux下直接拉取一份鏡像(各種環(huán)境都配好了),將鏡像運(yùn)行起來(lái),把war包丟進(jìn)去就好了。
將Docker的鏡像運(yùn)行起來(lái)就是一兩秒的事情而已,十分方便的。
2.2解決應(yīng)用之間隔離說(shuō)到這里,就得提出一個(gè)大家可能不認(rèn)識(shí)的概念:LXC(Linux Containers)--->Linux容器。
2.2.1Linux容器在Linux內(nèi)核中,提供了cgroups功能,來(lái)達(dá)成資源的區(qū)隔化。它同時(shí)也提供了名稱空間(namespace)區(qū)隔化的功能,使應(yīng)用程序看到的操作系統(tǒng)環(huán)境被區(qū)隔成獨(dú)立區(qū)間,包括進(jìn)程樹,網(wǎng)絡(luò),用戶id,以及掛載的文件系統(tǒng)。
簡(jiǎn)單來(lái)說(shuō)就是:LXC是一個(gè)為L(zhǎng)inux內(nèi)核包含特征的用戶接口。通過(guò)強(qiáng)大的API和簡(jiǎn)單的工具,它可以讓Linux用戶輕松的創(chuàng)建和托管系統(tǒng)或者應(yīng)用程序容器。
2.2.2回到Docker我們?cè)诜碊ocker的官方文檔的時(shí)候,也很容易看見cgroup和namespace這兩個(gè)名詞:
來(lái)源維基百科:
Early versions of Docker used LXC as the container execution driver, though LXC was made optional in v0.9 and support was dropped in Docker v1.10.
lxc是早期版本docker的一個(gè)基礎(chǔ)組件,docker 主要用到了它對(duì) Cgroup 和 Namespace 兩個(gè)內(nèi)核特性的控制。新的Docker版本已經(jīng)移除了對(duì)LXC的support。
2.2.3Docker在Windows和Mac上面說(shuō)了,Docker底層用的Linux的cgroup和namespace這兩項(xiàng)技術(shù)來(lái)實(shí)現(xiàn)應(yīng)用隔離,那Windows和Mac用戶能用Docker嗎?
之前,Windows和Mac使用Docker實(shí)際上就是跑了一層Linux虛擬機(jī)。
比如在Windows下安裝的是Docker Toolbox,它需要Oracle Virtual Box來(lái)跑Docker
現(xiàn)在,Windows和Mac都已經(jīng)原生支持Docker了。但需要一些安裝的條件,詳情可以查看官網(wǎng)
比如Windows:Docker for Windows requires 64bit Windows 10 Pro and Microsoft Hyper-V
參考資料:
Windows 原生 Docker 正式商用
http://blog.daocloud.io/windows-docker/
三、虛擬機(jī)和Docker說(shuō)到應(yīng)用隔離和鏡像,我就想起了虛擬機(jī)。今年下半年(此處省略.....),文體兩開花(此處省略.....),要是我寫文章寫得不好,我是需要向XX謝罪的。
估計(jì)大家都用過(guò)虛擬機(jī),虛擬機(jī)也能實(shí)現(xiàn)對(duì)應(yīng)用的隔離,安裝特定的鏡像也能跑出我們想要的環(huán)境。虛擬機(jī)已經(jīng)發(fā)展了很久了,為什么我們還需要Docker呢?
這部分內(nèi)容在官網(wǎng)也有相關(guān)的介紹:
http://www.docker-cn.com/what-container#/virtual_machines
一句話總結(jié):Docker容器比虛擬機(jī)輕量多了!
最后Docker可以干嘛?
將一整套環(huán)境打包封裝成鏡像,無(wú)需重復(fù)配置環(huán)境,解決環(huán)境帶來(lái)的種種問題。
Docker容器間是進(jìn)程隔離的,誰(shuí)也不會(huì)影響誰(shuí)。
其實(shí)這篇文章主要是講為什么我們需要Docker(在學(xué)習(xí)一項(xiàng)技術(shù)之前,必須要知道這項(xiàng)技術(shù)是用來(lái)干嘛的),Docker的一些概念和命令我還沒介紹(留到下一篇啦)。如果還沒看過(guò)【生活現(xiàn)場(chǎng)】從搬家到容器技術(shù)docker應(yīng)用場(chǎng)景解析,可以先去看看~
我在學(xué)習(xí)Docker的時(shí)候也找到了不少的資源,想要獲取Docker入門資源的同學(xué)可在公眾號(hào)下回復(fù)“Docker”
樂于分享和輸出干貨的Java技術(shù)公眾號(hào):Java3y。關(guān)注即可領(lǐng)取海量的視頻資源!
覺得我的文章寫得不錯(cuò),不妨點(diǎn)一下贊!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28047.html
摘要:那容器和鏡像有什么關(guān)系網(wǎng)上說(shuō)是類和對(duì)象的關(guān)系,沒錯(cuò),但是這樣的比喻沒什么實(shí)際卵用。針對(duì)這個(gè)問題,項(xiàng)目組決定把開發(fā)環(huán)境遷移到中,在測(cè)試環(huán)境中測(cè)試無(wú)誤后,把鏡像打包發(fā)布到正式環(huán)境中,解決了環(huán)境不同導(dǎo)致的問題。 本文旨在用最通俗的語(yǔ)言講述最枯燥的基本知識(shí) 最近Docker突然火得不得了,到處都是談?wù)揇ocker的聲音,相信大家和小編一樣的心情,看這個(gè)東西有點(diǎn)高大上,但嘗試去閱讀Docker文...
摘要:一為什么需要官方介紹中文版是世界領(lǐng)先的軟件容器平臺(tái)。其實(shí)這篇文章主要是講為什么我們需要在學(xué)習(xí)一項(xiàng)技術(shù)之前,必須要知道這項(xiàng)技術(shù)是用來(lái)干嘛的,的一些概念和命令我還沒介紹留到下一篇啦。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y 估計(jì)大家也可能聽過(guò)Docker這項(xiàng)技術(shù)(在論壇上、招聘技能...
摘要:獲取阿里云加速器地址進(jìn)入登錄阿里云進(jìn)入后臺(tái)配置加速器點(diǎn)擊后就會(huì)重啟并應(yīng)用配置的鏡像地址了檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請(qǐng)手動(dòng)檢查加速器配置是否生效,在命令行執(zhí)行,如果從結(jié)果中看到了如下內(nèi)容,說(shuō)明配置成功。 一、為什么要使用Docker以及與虛擬機(jī)的區(qū)別? 1.1 為什么要使用Docker Docker的思想來(lái)自于集裝箱。集裝箱解決了什么問題?在一艘大船上,...
摘要:為什么要用對(duì)開發(fā)者來(lái)說(shuō)啟動(dòng)速度快傳統(tǒng)虛擬機(jī)需要數(shù)分鐘的啟動(dòng)時(shí)間秒秒鐘啟動(dòng)。開發(fā)者只需要代碼到版本管理即可,接下來(lái)的自動(dòng)測(cè)試,自動(dòng)構(gòu)建,自動(dòng)部署都交給吧更輕松的擴(kuò)展。 1. 前言 相見恨晚用來(lái)形容我對(duì)docker的熱愛再合適不過(guò)了,自從用了docker,開發(fā)環(huán)境也不安裝了,系統(tǒng)想換就換了,部署更是一鍵部署,再也不用擔(dān)心在這臺(tái)機(jī)器上跑的好好的,其它機(jī)器有問題了... 寫這篇文章,也是為do...
摘要:本文從定義,作用,技術(shù)架構(gòu),安裝和使用等全方位帶你看懂。最后,于開發(fā)者而言提供了一種開發(fā)環(huán)境的管理辦法,與測(cè)試人員而言保證了環(huán)境的同步,于運(yùn)維人員提供了可移植的標(biāo)準(zhǔn)化部署流程。顯示上圖內(nèi)容就表明安裝完成。 作者丨唐文廣:騰訊工程師,負(fù)責(zé)無(wú)線研發(fā)部地圖測(cè)試。 導(dǎo)語(yǔ):Docker,近兩年才流行起來(lái)的超輕量級(jí)虛擬機(jī),它可以讓你輕松完成持續(xù)集成、自動(dòng)交付、自動(dòng)部署,并且實(shí)現(xiàn)開發(fā)環(huán)境、測(cè)試環(huán)...
閱讀 1461·2021-11-25 09:43
閱讀 2601·2021-09-24 10:30
閱讀 3671·2021-09-06 15:02
閱讀 3609·2019-08-30 15:55
閱讀 3310·2019-08-30 15:53
閱讀 1705·2019-08-30 15:52
閱讀 2151·2019-08-30 14:21
閱讀 2019·2019-08-30 13:55