真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

為什么需要Docker?

前言

只有光頭才能變強(qiáng)。

創(chuàng)新互聯(lián)建站專注于沅陵企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都做商城網(wǎng)站。沅陵網(wǎng)站建設(shè)公司,為沅陵等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y

估計(jì)大家也可能聽過Docker這項(xiàng)技術(shù)(在論壇上、招聘技能上、交流群上等等),要是不了解Docker,都不好意思在網(wǎng)上沖浪的時候吹牛逼了。

所以這幾天學(xué)了一下Docker,總結(jié)了Docker入門的相關(guān)知識,分享給大家(好讓我們一起吹牛逼)。

為什么需要Docker?

I need a doctor,call me a doctor. I need a doctor, doctor, to bring me back to life .

一、為什么需要Docker

官方介紹(中文版):

Docker 是世界領(lǐng)先的軟件容器平臺。
開發(fā)人員利用 Docker 可以消除協(xié)作編碼時“在我的機(jī)器上可正常工作”的問題。
運(yùn)維人員利用 Docker 可以在隔離容器中并行運(yùn)行和管理應(yīng)用,獲得更好的計(jì)算密度。
企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽(yù)為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能。

1.1環(huán)境(切換/配置)麻煩

一般我們寫程序的,能接觸到好幾個環(huán)境

  • 自己寫代碼的環(huán)境叫做開發(fā)環(huán)境。

  • 給測試去跑的環(huán)境叫做測試環(huán)境。

  • 測試完可以對外使用的叫做生產(chǎn)環(huán)境。

其實(shí)我們在學(xué)習(xí)編程中,很多時間都浪費(fèi)在“環(huán)境”上:

  • 如果我現(xiàn)在重裝了系統(tǒng),我想要跑我的war/jar包,我得去安裝一下JDK、Tomcat、MySQL等配置各種的環(huán)境變量才能跑起來。

  • 開開心心地跟著博主給出的步驟去寫Demo,但總是有Bug。(這里我將版本/依賴也歸納在環(huán)境的范疇里邊)。

  • 好不容易在測試環(huán)境下跑起來了,在生產(chǎn)環(huán)境就各種出錯!

  • 跟著教學(xué)視頻做分布式/集群的項(xiàng)目,跑一堆的虛擬機(jī),每個虛擬機(jī)都要安裝對應(yīng)的環(huán)境。

所以就有個笑話《千萬不要跟程序員說,你的代碼有bug》:

  • 他的第一反應(yīng)是你的環(huán)境有問題,第二就是你是傻逼不會用吧。

  • 你要跟他這么說:“這個程序運(yùn)行的怎么運(yùn)行的跟預(yù)期不一樣,是我操作有問題嗎?”。

  • 這貨就會第一反應(yīng)“我擦,這是不是出bug了?”

1.2應(yīng)用之間需要隔離

比如我寫了兩個應(yīng)用(網(wǎng)站),這兩個應(yīng)用部署在同一臺服務(wù)器上,那可能會出現(xiàn)什么問題?

  • 如果一個應(yīng)用出現(xiàn)了問題,導(dǎo)致CPU占100%。那另一個應(yīng)用也會受到關(guān)聯(lián),跟著一起涼涼了。

  • 這兩個應(yīng)用是完全不同技術(shù)棧的應(yīng)用,比如一個PHP,一個.NET。這兩個應(yīng)用各種的依賴軟件都安裝在同一個服務(wù)器上,可能就會造成各種沖突/無法兼容,這可能調(diào)試就非常麻煩了。

二、Docker是如何解決上述的問題的

2.1解決環(huán)境(切換/配置)

不知道大家有沒有裝過系統(tǒng),比如說裝Linux虛擬機(jī),重裝Windows系統(tǒng),都是需要鏡像的。

為什么需要Docker?

有了這個鏡像,我們就可以運(yùn)行這個鏡像,來進(jìn)行安裝系統(tǒng)的操作(此處省略N個下一步),于是我們的系統(tǒng)就裝好了。一般來說,我們?nèi)ス俜角老螺d的鏡像,都是純凈的。比如去官方下載Windows鏡像,裝完后之后桌面只有一個回收站。

但有過了解裝系統(tǒng)的同學(xué)可能就會知道,有的鏡像裝完可能還有360這些軟件,但系統(tǒng)的的確確是變了。簡單來說,就是這些鏡像添加了其他的東西(比如360軟件、騰訊、千千靜聽等等軟件)。

Docker也是這種思路,可以將我們的想要的環(huán)境構(gòu)建(打包)成一個鏡像,然后我們可以推送(發(fā)布)到網(wǎng)上去。想要用這個環(huán)
境的時候,在網(wǎng)上拉取一份就好了。

有了Docker,我們在搭環(huán)境的時候,跟以前的方式就不一樣了。

  • 之前:在開發(fā)環(huán)境構(gòu)建出了一個war包,想跑到Linux下運(yùn)行。我們得先在Linux下載好Java、Tomcat、MySQL,配置好對應(yīng)的環(huán)境變量,將war包丟到Tomcat的webapps文件夾下,才能跑起來。

  • 現(xiàn)在:在Linux下直接拉取一份鏡像(各種環(huán)境都配好了),將鏡像運(yùn)行起來,把war包丟進(jìn)去就好了。

為什么需要Docker?

將Docker的鏡像運(yùn)行起來就是一兩秒的事情而已,十分方便的。

2.2解決應(yīng)用之間隔離

說到這里,就得提出一個大家可能不認(rèn)識的概念:LXC(Linux Containers)--->Linux容器。

2.2.1Linux容器

在Linux內(nèi)核中,提供了cgroups功能,來達(dá)成資源的區(qū)隔化。它同時也提供了名稱空間(namespace)區(qū)隔化的功能,使應(yīng)用程序看到的操作系統(tǒng)環(huán)境被區(qū)隔成獨(dú)立區(qū)間,包括進(jìn)程樹,網(wǎng)絡(luò),用戶id,以及掛載的文件系統(tǒng)。

簡單來說就是:LXC是一個為Linux內(nèi)核包含特征的用戶接口。通過強(qiáng)大的API和簡單的工具,它可以讓Linux用戶輕松的創(chuàng)建和托管系統(tǒng)或者應(yīng)用程序容器。

2.2.2回到Docker

我們在翻看Docker的官方文檔的時候,也很容易看見cgroup和namespace這兩個名詞:

為什么需要Docker?

來源維基百科:

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的一個基礎(chǔ)組件,docker 主要用到了它對 Cgroup 和 Namespace 兩個內(nèi)核特性的控制。新的Docker版本已經(jīng)移除了對LXC的support。

2.2.3Docker在Windows和Mac

上面說了,Docker底層用的Linux的cgroup和namespace這兩項(xiàng)技術(shù)來實(shí)現(xiàn)應(yīng)用隔離,那Windows和Mac用戶能用Docker嗎?

  • 之前,Windows和Mac使用Docker實(shí)際上就是跑了一層Linux虛擬機(jī)。

    • 比如在Windows下安裝的是Docker Toolbox,它需要Oracle Virtual Box來跑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

說到應(yīng)用隔離和鏡像,我就想起了虛擬機(jī)。今年下半年(此處省略…..),文體兩開花(此處省略…..),要是我寫文章寫得不好,我是需要向XX謝罪的。

估計(jì)大家都用過虛擬機(jī),虛擬機(jī)也能實(shí)現(xiàn)對應(yīng)用的隔離,安裝特定的鏡像也能跑出我們想要的環(huán)境。虛擬機(jī)已經(jīng)發(fā)展了很久了,為什么我們還需要Docker呢?

這部分內(nèi)容在官網(wǎng)也有相關(guān)的介紹:

  • http://www.docker-cn.com/what-container#/virtual_machines

為什么需要Docker?

一句話總結(jié):Docker容器比虛擬機(jī)輕量多了!

最后

Docker可以干嘛?

  • 將一整套環(huán)境打包封裝成鏡像,無需重復(fù)配置環(huán)境,解決環(huán)境帶來的種種問題。

  • Docker容器間是進(jìn)程隔離的,誰也不會影響誰。

其實(shí)這篇文章主要是講為什么我們需要Docker(在學(xué)習(xí)一項(xiàng)技術(shù)之前,必須要知道這項(xiàng)技術(shù)是用來干嘛的),Docker的一些概念和命令我還沒介紹(留到下一篇啦)。如果還沒看過【生活現(xiàn)場】從搬家到容器技術(shù)docker應(yīng)用場景解析,可以先去看看~


當(dāng)前題目:為什么需要Docker?
文章轉(zhuǎn)載:http://weahome.cn/article/jssheg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部