最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 使用Docker時(shí)經(jīng)常遇到的五個(gè)問(wèn)題

 更新時(shí)間:2016年10月09日 11:10:45   投稿:lqh  
這篇文章主要介紹了Java 使用Docker時(shí)經(jīng)常遇到的五個(gè)問(wèn)題的相關(guān)資料,需要的朋友可以參考下

  Docker現(xiàn)在很火,容器技術(shù)看上不無(wú)所不能,但這實(shí)際上是一種誤解,不要被炒作出來(lái)的泡沫迷住雙眼,本文拋去炒作,理性地從Java程序員的角度,列舉出Docker目前的五大誤區(qū),幫助你更好地理解Docker的優(yōu)勢(shì)和問(wèn)題。

  拋去那些媒體和廠商們的炒作,我們?nèi)绾尾拍芨酶硇缘氖褂肈ocker? 

 

  Docker最近備受關(guān)注,原因顯而易見(jiàn)。如何成功交付代碼一直困擾著大家。傳統(tǒng)的容器技術(shù)在眾多需求和模板中亂成一團(tuán)。而Docker可以簡(jiǎn)單且 重復(fù)的創(chuàng)建容器。相比其它容器,使用Docker可以更快、更自然的交付代碼。Duang,Docker火了!隨之而來(lái)也有一些誤解和誤區(qū)。不要太相信別 人說(shuō)Docker好用或者不好用。自己理性地全面思考一下Docker,會(huì)幫助你真正理解是否真的需要它。

  本文列舉了從Java角度的五大Docker誤讀。不過(guò)首先介紹些背景知識(shí)。為了更好地理解Docker,我們咨詢了Fewbytes的Avishai Ish-Shalom,他有豐富的Docker經(jīng)驗(yàn),也是DevOps Days會(huì)議的組織者。我們和他一起列舉出了這些誤解。

  主要誤區(qū)

  1. Docker是輕量級(jí)虛擬機(jī)

  這是大家初學(xué)Docker時(shí)最主要的誤解。這種誤解倒也情有可原,Docker的確看上去有點(diǎn)像虛擬機(jī)。Docker網(wǎng)站上甚至有人比較了Docker和虛擬機(jī)的區(qū)別。但是,Docker實(shí)際上不是輕量級(jí)虛擬機(jī),而是改進(jìn)了的Linux容器(LXC)。Docker和虛擬機(jī)是完全不一樣的,如果你把Docker容器當(dāng)成輕量級(jí)虛擬機(jī)來(lái)用,會(huì)遇到很多問(wèn)題。

  在使用Docker之前,必須了解Docker容器和虛擬機(jī)有很多本質(zhì)的區(qū)別。

  資源隔離:Docker達(dá)不到虛擬機(jī)所能提供的資源隔離水平。虛擬機(jī)的資源是高度隔離的,而Docker從設(shè)計(jì)之初就需要共享一些資源,這些資源是Docker無(wú)法隔離和保護(hù)的,比如頁(yè)緩存和內(nèi)核熵池。(注:內(nèi)核熵池很有趣,它收集并且存儲(chǔ)系統(tǒng)操作生成的隨機(jī)比特。機(jī)器在需要隨機(jī)化時(shí)會(huì)使用這個(gè)池,比如密碼相關(guān)。)如果Docker容器占用了這些共享資源,那么其它進(jìn)程在這些資源被釋放前只能等待。

  開(kāi)銷:大多數(shù)人都知道虛擬機(jī)的CPU和RAM能提供類似物理機(jī)的性能,但是有很多額外的IO開(kāi)銷。因?yàn)榉艞壛颂摂M機(jī)的guest OS,Docker的package更小,比起虛擬機(jī)需要更少的存儲(chǔ)開(kāi)銷。但這并不意味著Docker沒(méi)有任何開(kāi)銷問(wèn)題。Docker容器依然需要注意 IO開(kāi)銷的問(wèn)題,只不過(guò)沒(méi)有虛擬機(jī)嚴(yán)重而已。

  內(nèi)核使用:Docker容器和虛擬機(jī)在內(nèi)核使用上完全不同。每個(gè)虛擬機(jī)使用一個(gè)內(nèi)核。Docker容器則是在所有容器間共享內(nèi)核。共享內(nèi)核帶來(lái)一些 效率的提升,但是以高可用和冗余為代價(jià)。如果虛擬機(jī)發(fā)生了內(nèi)核崩潰,只有這個(gè)內(nèi)核上的虛擬機(jī)會(huì)受影響。而Docker容器如果內(nèi)核崩潰了,所有的容器都會(huì) 受影響。

  2. Docker使得應(yīng)用可擴(kuò)展

  因?yàn)镈ocker可以在很短的時(shí)間內(nèi)在多個(gè)服務(wù)器上部署代碼,自然有人會(huì)覺(jué)得Docker可以讓?xiě)?yīng)用自身變得可擴(kuò)展。不幸的是,這是錯(cuò)誤的。代碼是 應(yīng)用的基石,而Docker并不會(huì)重寫(xiě)代碼。應(yīng)用的可擴(kuò)展性依然取決于程序員。使用Docker并不會(huì)自動(dòng)得讓你的代碼易于擴(kuò)展,只是讓這些代碼更容易跨 服務(wù)器部署而已。

  3. Docker在生產(chǎn)環(huán)境廣為使用

  因?yàn)镈ocker勢(shì)頭正勁,很多人便認(rèn)為Docker可以在生產(chǎn)環(huán)境上大規(guī)模使用。事實(shí)上,這是不對(duì)的。注意Docker還是很新的技術(shù),還不成 熟,正在成長(zhǎng),這意味著還有很多煩人的bug和待完善的功能。對(duì)新技術(shù)感興趣這沒(méi)錯(cuò),但是最好要弄清楚新技術(shù)的正確使用場(chǎng)景和需要注意的地方?,F(xiàn) 在,Docker很容易應(yīng)用到開(kāi)發(fā)環(huán)境。使用Docker可以很容易地搭建出很多不同的環(huán)境(至少,給人的感覺(jué)是能夠搭建出不同的環(huán)境),這對(duì)于開(kāi)發(fā)很有 用。

  而在生產(chǎn)環(huán)境中,Docker的不成熟和不完善也限制了使用場(chǎng)景。比如,Docker不直接支持對(duì)多機(jī)器的網(wǎng)絡(luò)和資源的監(jiān)控,這使得它幾乎無(wú)法在生 產(chǎn)環(huán)境中使用。當(dāng)然也有很多有潛力的地方,比如可以將同一個(gè)package從開(kāi)發(fā)環(huán)境直接部署到生產(chǎn)環(huán)境。還有一些Docker運(yùn)行時(shí)特性對(duì)于生產(chǎn)環(huán)境也 很有用。但是總的來(lái)說(shuō),在生產(chǎn)環(huán)境里,目前不足多于優(yōu)勢(shì)。這并不是說(shuō)無(wú)法成功運(yùn)用到生產(chǎn)環(huán)境,只是現(xiàn)在還不能指望它一下子成熟和完美。

  4. Docker是跨OS的

  另一個(gè)誤解是Docker在任意操作系統(tǒng)和環(huán)境上都可以工作。這可能來(lái)自于裝卸貨物的集裝箱的類比,但是軟件和操作系統(tǒng)的關(guān)系可不像船位那么簡(jiǎn)單直接。

  實(shí)際上,Docker只是Linux上的技術(shù)。并且Docker依賴特定的內(nèi)核特性,必須要有最新版本的內(nèi)核才行?;诓煌琌S的差異性,跨OS 時(shí),如果使用的不是最底層通用的特性,會(huì)遇到很多麻煩的問(wèn)題。這些問(wèn)題可能只有1%的發(fā)生率,但是當(dāng)你在多臺(tái)服務(wù)器上部署時(shí),1%也是致命的。

  雖然Docker只在Linux上運(yùn)行,但是也可以在OS X或者Windows上使用Docker。使用boot2docker會(huì)在OS X或Windows機(jī)器上運(yùn)行一個(gè)Linux虛擬機(jī),這樣Docker可以在這個(gè)虛擬機(jī)里運(yùn)行。

  5. Docker增強(qiáng)應(yīng)用的安全性

  覺(jué)得Docker可以改進(jìn)代碼和交付代碼過(guò)程的安全性,這也是誤解。這也是真實(shí)的集裝箱和軟件上容器的差別。Docker是一種容器化技術(shù),添加了 編排方法。但是Linux的容器有一些安全漏洞可能會(huì)被攻擊。Docker并沒(méi)有為這些漏洞添加任何安全層或者補(bǔ)丁。它還不是能保護(hù)應(yīng)用的鐵布衫。

  從Java角度看

  一些Java開(kāi)發(fā)人員已經(jīng)開(kāi)始使用Docker。Docker的某些特性讓我們更容易構(gòu)建可擴(kuò)展的上下文環(huán)境。不像uber-jar,Docker 可以幫助你將所有的依賴(包括JVM)打包到一個(gè)隨時(shí)可發(fā)布的鏡像中。這也是Docker對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)最迷人的地方。但是,這也會(huì)帶來(lái)一些隱患。一般 來(lái)說(shuō),程序員需要用不同的方式和代碼交互 – 監(jiān)控它,調(diào)試它,連接它,調(diào)優(yōu)它….如果使用Docker,這些都會(huì)需要額外的工作。

  比如,我們想使用jconsole,它依賴于JMX功能,JMX因?yàn)橐褂肦MI又需要網(wǎng)絡(luò)。使用Docker的話就不是很直接,需要一些技巧去開(kāi) 啟所需端口。我們最初發(fā)現(xiàn)這個(gè)問(wèn)題是當(dāng)我們想要構(gòu)建Takipi的Docker應(yīng)用,我們不得不在容器里JVM之外運(yùn)行了一個(gè)后臺(tái)程序。詳細(xì)的解決方案在 GitHub上。

  另外一個(gè)很嚴(yán)重的問(wèn)題是Docker容器的性能調(diào)優(yōu)相當(dāng)困難。當(dāng)使用容器時(shí),你不知道每個(gè)容器到底會(huì)分配多少內(nèi)存。如果你有20個(gè)容器,內(nèi)存會(huì)以你 不確定的方式分配給它們。如果你打算用參數(shù)-Xmx調(diào)優(yōu)堆的大小,就很困難,因?yàn)閷?duì)Docker容器內(nèi)JVM的處理取決于能夠自動(dòng)得到該容器分配到的內(nèi)存 大小。如果都不知道分配了多少內(nèi)存,性能調(diào)優(yōu)幾乎不可能。

  結(jié)論

  Docker是很有意思的技術(shù),有一些真實(shí)有效的使用場(chǎng)景。作為一個(gè)新興技術(shù),還需要大量時(shí)間來(lái)解決缺失的功能和已知的bug。但是,現(xiàn)在這個(gè)領(lǐng)域的確有很多的炒作。不過(guò)記住哦,炒作可不是成功~

       感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Lombok在idea中的使用教程

    Lombok在idea中的使用教程

    Lombok是一個(gè)可以通過(guò)簡(jiǎn)單的注解形式,來(lái)幫助我們簡(jiǎn)化消除一些必須有但顯得很臃腫(如果getter、setter方法)的Java代碼的工具,通過(guò)使用對(duì)應(yīng)的注解,可以在編譯源碼的時(shí)候生成對(duì)應(yīng)的方法,這篇文章主要介紹了Lombok在idea中的使用,需要的朋友可以參考下
    2023-03-03
  • Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題

    Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題

    這篇文章主要介紹了Spring boot測(cè)試找不到SpringRunner.class的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 模仿mybatis-plus實(shí)現(xiàn)rpc調(diào)用

    模仿mybatis-plus實(shí)現(xiàn)rpc調(diào)用

    這篇文章主要為大家介紹了模仿mybatis-plus實(shí)現(xiàn)rpc調(diào)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 詳解SpringCloud Config配置中心

    詳解SpringCloud Config配置中心

    這篇文章主要介紹了詳解SpringCloud Config配置中心,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Java源碼解析之詳解ReentrantLock

    Java源碼解析之詳解ReentrantLock

    今天給大家?guī)?lái)的是關(guān)于Java并發(fā)的相關(guān)知識(shí),文章圍繞著ReentrantLock源碼展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java 并發(fā)編程的可見(jiàn)性、有序性和原子性

    Java 并發(fā)編程的可見(jiàn)性、有序性和原子性

    這篇文章主要介紹了Java 并發(fā)編程的可見(jiàn)性、有序性和原子性的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā)編程,感興趣的朋友可以了解下。
    2020-11-11
  • SpringBoot入門編寫(xiě)第一個(gè)程序Helloworld

    SpringBoot入門編寫(xiě)第一個(gè)程序Helloworld

    這篇文章是Springboot入門篇,來(lái)教大家編寫(xiě)第一個(gè)Springboot程序Helloworld,文中附有詳細(xì)的示例代碼,有需要的同學(xué)可以借鑒參考下
    2021-09-09
  • Java中double和float類型的區(qū)別與使用方法

    Java中double和float類型的區(qū)別與使用方法

    float和double都是用來(lái)表示浮點(diǎn)數(shù)的數(shù)據(jù)類型,但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于Java中double和float類型的區(qū)別與使用方法的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java中四種操作(DOM、SAX、JDOM、DOM4J)xml方式的比較與詳解
    2008-10-10
  • SpringBoot中使用Netty的實(shí)現(xiàn)示例

    SpringBoot中使用Netty的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot中使用Netty的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04

最新評(píng)論

金川县| 武宣县| 灵丘县| 固安县| 阜康市| 营山县| 七台河市| 西和县| 曲阳县| 内丘县| 调兵山市| 定结县| 廊坊市| 竹北市| 涞水县| 大新县| 泽普县| 宿松县| 榆社县| 河南省| 宁河县| 涡阳县| 黄平县| 连南| 灵台县| 潜江市| 观塘区| 鄂尔多斯市| 汉川市| 南部县| 尖扎县| 星座| 平陆县| 灵台县| 兴宁市| 萨迦县| 湘乡市| 信丰县| 兴和县| 威信县| 中方县|