偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Docker時代來了,你準(zhǔn)備好了嗎 ?

云計算
Docker之所以受人矚目,并不是因?yàn)樗鼊?chuàng)造了多么神奇的技術(shù),而是因?yàn)樗匦露x了軟件的交付方式,進(jìn)而將改變傳統(tǒng)“開發(fā)-測試-部署”的軟件流程。尤其是在云計算和開源軟件大行其道的今天,Docker的出現(xiàn)正好順應(yīng)了時代的發(fā)展,占盡了天時地利人和。本文著眼于Docker的價值、Docker思維、Docker的運(yùn)行方式這三個問題,幫助大家認(rèn)識和應(yīng)用Docker。

剛剛過去的2014年或許是史上最熱的一年,在這火熱的年份里,Docker 也好似一支被點(diǎn)燃的火箭,掀起一股股熱浪。Docker之所以如此受人矚目,并不是因?yàn)樗鼊?chuàng)造了多么神奇的技術(shù),而是因?yàn)樗匦露x了軟件的交付方式,進(jìn)而將改變傳統(tǒng)“開發(fā)-測試-部署”的軟件流程。尤其是在云計算和開源軟件大行其道的今天,Docker的出現(xiàn)正好順應(yīng)了時代的發(fā)展,占盡了天時地利人和。

本文的重點(diǎn)不是討論Docker的基本原理或?qū)崿F(xiàn)機(jī)制(網(wǎng)上有太多的資料文檔可以參考,比如這篇博客《Docker,云時代的程序交付方式》),而是基于前一段時間的探索實(shí)踐,分享一些我們對Docker的認(rèn)識與思考,期待有更多的同行參與進(jìn)來,一起推動Docker在國內(nèi)的應(yīng)用,享受到其發(fā)展的紅利。因此,我們這里著眼于以下三個問題:為什么Docker有價值?什么是Docker思維?如何把Docker玩起來?

為什么Docker有價值

為什么Docker這么有價值?在回答這個問題之前,我們先想一個相似的問題,為什么阿里巴巴這么有價值?

傳統(tǒng)的商業(yè)存在兩大弊端:一是買賣雙方相對分散,加大了需求收集、營銷、運(yùn)輸?shù)某杀?;二是買賣雙方信息不對稱,對交易產(chǎn)生了抑制作用。

電子商務(wù)的出現(xiàn)則將商品從賣方到買方的流通過程變得集中化、標(biāo)準(zhǔn)化、透明化:

  • 集中化:買家足不出戶就能從各個商戶集中購買商品,賣家根據(jù)買家需求集中配貨、根據(jù)下單情況集中發(fā)貨。
  • 標(biāo)準(zhǔn)化:買家支付下單-賣家發(fā)貨-快遞包裹-物流運(yùn)輸-買家收貨確認(rèn),整個流程都是標(biāo)準(zhǔn)化的。
  • 透明化:買家可以在網(wǎng)上瀏覽商品評價、比較商品價格。買賣雙方的信用等級也是完全透明的。

綜上所述,可以說阿里巴巴這樣的電商帶來的***價值在于降低了商品的社會交易成本。

現(xiàn)在我們把商業(yè)發(fā)展的邏輯搬到軟件交付這里。傳統(tǒng)的軟件交付面臨同傳統(tǒng)商業(yè)類似的問題:

  1. 軟件發(fā)布分散化,使用者搜索和安裝軟件的成本較高。當(dāng)然,我們有類似yum、brew這樣的工具來集中處理軟件安裝與軟件依賴問題。但是,不要忘記開源軟件已經(jīng)占據(jù)越來越重要的位置,它們的發(fā)展速度和協(xié)作方式使傳統(tǒng)的工具很難跟上節(jié)奏。
  2. 軟件開發(fā)者和軟件使用者雙方信息不對稱。盡管開發(fā)者對軟件的代碼編譯、參數(shù)配置、運(yùn)行環(huán)境等信息了如指掌,但使用者卻很可能一知半解。因此,我們會經(jīng)??吹绞褂谜弑г?,明明按照用戶手冊一步步操作,卻仍然跑不起來。這種情況也時常出現(xiàn)在軟件流程中,開發(fā)將程序和文檔交付給測試或運(yùn)維,測試或運(yùn)維卻總是無法重現(xiàn)期望的運(yùn)行狀態(tài),幾經(jīng)輾轉(zhuǎn)發(fā)現(xiàn)是機(jī)器環(huán)境 、系統(tǒng)環(huán)境、軟件依賴版本、參數(shù)配置等等原因?qū)е?。這樣低效的軟件流程將使持續(xù)集成與持續(xù)交付很難真正實(shí)施起來,僅僅流于形式。

Docker的出現(xiàn)則將軟件從開發(fā)方到使用方的交付過程變得集中化、標(biāo)準(zhǔn)化、透明化:

  • 集中化:軟件使用者可以從Docker倉庫找到琳瑯滿目的軟件鏡像,一個鏡像包含商業(yè)軟件或開源軟件,也可以包含單個軟件或任意的軟件組合。
  • 標(biāo)準(zhǔn)化:Docker鏡像的“構(gòu)建-發(fā)布-存儲-下載-運(yùn)行”是標(biāo)準(zhǔn)化的,統(tǒng)一通過Docker工具來執(zhí)行,而且所有操作都可以移植到任意的機(jī)器或平臺。
  • 透明化:Docker鏡像是自包含的,包括程序、軟件依賴、參數(shù)配置等所有運(yùn)行環(huán)境,使用者無需了解細(xì)節(jié),只需運(yùn)行同樣的Docker命令就能達(dá)到與開發(fā)者同樣的運(yùn)行狀態(tài)。

綜上所述,可以說Docker帶來的***價值在于降低了軟件的交付成本。

#p#

什么是Docker思維

這年頭流行思維主義,什么互聯(lián)網(wǎng)思維、大數(shù)據(jù)思維格外賺人眼球。這里我們跟風(fēng)一下,提出一個Docker思維,其實(shí)歸納起來就兩句話:

  1. 做為軟件使用者,避免直接安裝軟件包,總是以Docker鏡像形式獲取軟件、以Docker容器形式運(yùn)行軟件。
  2. 做為軟件開發(fā)者,避免直接發(fā)布軟件包,總是以Docker鏡像形式發(fā)布到Docker倉庫。

怎樣理解這兩句話?下面通過一個簡單的實(shí)踐來說明。假定現(xiàn)在我們在開發(fā)一個Java程序,從編譯到運(yùn)行需要使用以下幾個軟件工具:1) git,源碼版本控制; 2) maven,源碼編譯; 3) mysql,存儲數(shù)據(jù)庫。

遵循Docker思維,做為使用者,我們應(yīng)該避免直接安裝git、maven及mysql,而是通過Docker來獲取。

首先,從github上獲取源代碼:

  1. docker run -it --rm -v "$(pwd)":/app switchback/git-debian git clone https://github.com/spring-by-example/spring-by-example.git /app 

運(yùn)行以上命令將在當(dāng)前文件夾clone指定github地址的源代碼。簡單解析一下命令:

  • switchback/git-debian,是git的Docker鏡像URL。
  • -it,指定以交互方式啟動容器。
  • --rm,指定命令結(jié)束自動刪除容器。
  • -v "$(pwd)":/app, 指定將宿主機(jī)的當(dāng)前文件夾mount到容器里的/app文件夾。

然后,通過maven來編譯源碼:

  1. docker run -it --rm -v "$(pwd)":/app -w /app docker.cn/docker/maven mvn clean package 

運(yùn)行以上命令將在當(dāng)前源碼文件夾編譯maven項(xiàng)目。簡單解析一下命令:

  1. maven:3.2-jdk-7,是maven的Docker鏡像URL。
  2. -w /app,指定容器的工作路徑為"/app"。

***,搭建mysql數(shù)據(jù)庫:

  1. docker run -e MYSQL_ROOT_PASSWORD=mypassword -d -p 3306:3306 docker.cn/docker/mysql 

運(yùn)行以上命令將在本機(jī)啟動一個mysql數(shù)據(jù)庫。簡單解析一下命令:

  • docker.cn/docker/mysql,是mysql的Docker鏡像URL。
  • -e MYSQL_ROOT_PASSWORD=mypassword,-e選項(xiàng)用于向Docker容器里注入環(huán)境變量,這里通過MYSQL_ROOT_PASSWORD環(huán)境變量傳遞mysql的root密碼。
  • -d,指定后臺方式啟動容器
  • -p 3306:3306,指定將容器的3306端口綁定到宿主機(jī)的3306端口。

可以看到,三條Docker命令就滿足了我們對git/maven/mysql的使用需求,而且可以完全移植到有Docker環(huán)境的任意機(jī)器。那么,接下來的問題是,如何發(fā)布我們的Java程序?

遵循Docker思維,做為開發(fā)者,應(yīng)該通過Docker來發(fā)布軟件。

首先,編寫一個Dockerfile來制作Docker鏡像,它有點(diǎn)類似Makefile的作用:

  1. #每個Docker鏡像需要基于某個基礎(chǔ)鏡像來構(gòu)建 
  2. #新鏡像的構(gòu)建操作會在基礎(chǔ)鏡像上疊加 
  3. FROM docker.oa.com:8080/docker/java7 
  4. #將源碼編譯后產(chǎn)生的jar文件拷貝到鏡像里 
  5. ADD target/myapp.jar /app/myapp.jar 
  6. #指定容器的啟動命令 
  7. CMD java -jar /app/myapp.jar 

保存以上的Dockerfile,運(yùn)行以下命令制作鏡像,指定鏡像名為myapp,版本為1.0:

  1. docker build -t myapp:1.0 . 

鏡像制作完成后,可以提交到Docker倉庫,軟件發(fā)布就完成了:

  1. docker push myapp:1.0 

可以看到,兩條Docker命令加一個Dockerfile就滿足了我們對軟件的發(fā)布需求。更重要的是,使用者可以像我們之前使用git/maven/mysql那樣,通過Docker獲取并運(yùn)行該軟件。

#p#

如何把Docker玩起來

君子動口又動手,才是好程序員。要想玩轉(zhuǎn)Docker,首先得動手把Docker環(huán)境搭建起來。下面讓我們花5分鐘的時間在Windows上搭建Docker環(huán)境。

方式一

最簡單的方式是直接安裝boot2docker,它是一個為體驗(yàn)Docker而打造的輕量級Linux發(fā)行版。在Windows上可以直接運(yùn)行boot2docker安裝文件,它默認(rèn)會綁定安裝VirtualBox以便在虛擬機(jī)中運(yùn)行boot2docker。

boot2docker極其輕量,安裝簡單,但是它完全是運(yùn)行在內(nèi)存中的,這意味著你在系統(tǒng)中修改的配置或保存的文件,在重啟后都會丟失。在某些情況下,可能你希望***創(chuàng)建某個用戶賬號,或者***保存某些文件(例如Dockerfile),這時候boot2docker就無法滿足了,可以嘗試方式二。

方式二

通過vagrant安裝coreos。coreos是另一個為Docker而打造的輕量級Linux發(fā)行版,但它的目標(biāo)是大規(guī)模生產(chǎn)環(huán)境部署,而不僅僅是體驗(yàn);vagrant是一個創(chuàng)建可移植的開發(fā)環(huán)境的工具。我們通過以下幾步來安裝coreos:

1. 安裝virtualbox

2. 安裝vagrant

3. 下載coreos的vagrant box——coreos_production_vagrant.box

4. 運(yùn)行以下命令添加vagrant box:

  1. vagrant.exe box add --name coreos coreos_production_vagrant.box 

5. cd到一個新的文件夾,運(yùn)行以下命令啟動coreos虛擬機(jī):

  1. vagrant.exe init coreos 
  2. vagrant.exe up 

6. 現(xiàn)在就可以ssh到coreos了:

  1. vagrant.exe ssh 

7. 當(dāng)然也可以通過putty這樣的工具來ssh到coreos:IP=127.0.0.1,Port=2222。

到目前為止,相信你已經(jīng)能夠在Windows上自由體驗(yàn)Docker了,不妨試試將自己的軟件制作成鏡像,發(fā)布到倉庫,再讓其他人通過Docker獲取運(yùn)行,你會發(fā)現(xiàn)原來軟件交付真的是如此便捷!

接下來更進(jìn)一步,你可以考慮將復(fù)雜一點(diǎn)的分布式應(yīng)用遷移到Docker,這時候就需要搭建Docker集群,而更關(guān)鍵的問題是,如何做資源調(diào)度、擴(kuò)縮容、服務(wù)發(fā)現(xiàn)、自動容錯、集群監(jiān)控。Docker自身目前還不能解決集群應(yīng)用的問題(雖然已經(jīng)在朝著這個方向努力),這需要在Docker之上構(gòu)建集群管理系統(tǒng),業(yè)界有名的開源項(xiàng)目包括Kubernetes和Flynn,具體介紹可參考筆者的文章《Kubernetes初探:原理及實(shí)踐應(yīng)用》和《Flynn初探:基于Docker的PaaS平臺》。

總結(jié)

經(jīng)過本文的分享,希望大家對Docker有更了清晰的認(rèn)識,并且能動手玩起來。有任何疑問或者想法,歡迎通過郵件zhangjun2915@163.com交流,讓我們攜手走進(jìn)Docker時代,做新時代的弄潮兒。

[[125835]]

博文出處:http://blog.csdn.net/zhangjun2915/article/details/42472813

 

 

責(zé)任編輯:Ophira 來源: TragicJun的專欄
相關(guān)推薦

2011-05-25 17:08:29

ibmdwLinux

2011-05-25 10:15:47

開源

2018-10-11 17:43:15

人臉識別人工智能AI

2018-10-16 18:26:52

人工智能AI

2013-06-05 15:39:21

大協(xié)同

2015-09-08 16:04:06

云災(zāi)備華為

2011-08-30 09:28:36

編程

2010-08-25 15:49:04

面試

2016-05-31 16:50:33

2013-08-02 14:34:35

移動互聯(lián)網(wǎng)

2011-07-08 10:18:09

海量數(shù)據(jù)數(shù)據(jù)挖掘

2015-12-15 10:47:35

中國外包網(wǎng)

2021-08-02 15:42:36

人工智能無人機(jī)無人駕駛

2009-06-23 14:09:53

Web 3.0語義網(wǎng)OpenAmplify

2016-01-07 10:54:29

機(jī)器取代

2015-10-19 16:51:01

2013-01-28 16:51:45

2011-01-12 09:37:59

2020-03-26 17:28:22

CIO觀點(diǎn)MES系統(tǒng)制造企業(yè)

2015-10-29 11:02:51

敏捷數(shù)據(jù)中心SDN方案華為
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號