日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何使用 Docker 來協(xié)助 X 系統(tǒng)上的開發(fā)工作

對(duì)應(yīng)用進(jìn)行設(shè)置可能會(huì)相當(dāng)復(fù)雜,尤其是在 Linux 系統(tǒng)上。不同應(yīng)用有不同的配置方法,它們會(huì)在不同的文件系統(tǒng)路徑下(在不同的 Linux 發(fā)行版中,由于應(yīng)用存在多種變種,這些路徑也會(huì)有所不同)保存二進(jìn)制文件和數(shù)據(jù)。一旦你把系統(tǒng)配置好了,就很難再恢復(fù)到之前的狀態(tài),尤其是你同時(shí)進(jìn)行了一些其他修改的時(shí)候(比如,安裝了一些其他應(yīng)用程序)。這也是最近諸如 Puppet、 Chef、 Ansible 和 Salt 這樣的部署工具流行的原因。但即使有了這些工具的幫助,創(chuàng)建 cookbook/recipe 也許也十分麻煩: Linux 系統(tǒng)并非以傻瓜化著稱,系統(tǒng)本身也不能讓你擺脫麻煩。

業(yè)界出現(xiàn)了一個(gè)新的工具

很幸運(yùn)的是,對(duì)于 Linux 運(yùn)維人員來說,一個(gè)新的工具產(chǎn)生了,而該工具很有可能改變游戲規(guī)則:Docker ,一個(gè)開源的平臺(tái),能夠以一種輕量級(jí)的方式打包應(yīng)用程序以及它們的依賴。

這到底意味著什么?

Docker 使你能夠在 Linux 系統(tǒng)上對(duì)不同的應(yīng)用程序進(jìn)行隔離,在不同的上下文環(huán)境中運(yùn)行這些程序(這些程序可能執(zhí)行在一臺(tái)物理機(jī)器上,也可能運(yùn)行在不同的物理機(jī)器上),請(qǐng)記住,這一點(diǎn)非常重要:

  • Docker 使用了底層的內(nèi)核機(jī)制做到了資源隔離,而并不需要其他資源消耗型的虛擬化技術(shù),如果想了解更多細(xì)節(jié),請(qǐng)點(diǎn)擊這里。
  • Docker 鏡像(一些保存的快照)以及 Docker 容器(運(yùn)行時(shí)隔離應(yīng)用程序的容器)與虛擬鏡像相比,使用起來快多了。
  • 容器十分靈活,你可以在容器里打包很多應(yīng)用,你也可以只打包一個(gè),同時(shí)你可以盡你所愿來運(yùn)行容器。
  • Docker 容器里運(yùn)行著一些鏡像,而這些鏡像之上有一個(gè)層的概念,分層使得你能夠很容易地構(gòu)造你的應(yīng)用程序(每次操作都可以很容易地回滾/前滾,你只需要簡(jiǎn)單地增加或是刪除層,卻不會(huì)對(duì)下面的層產(chǎn)生影響)。
  • Docker ***地支持了“一次配置,到處運(yùn)行”的范式。

在實(shí)踐中 Docker 是如何工作的?

或者這么講,至少對(duì)于我來說,它是這么工作的:

  1. 我已經(jīng)在我的本地 Vagrant 環(huán)境中指定了 Docker 作為部署工具, Vagrant 從 1.6 版本就引入了這一功能。對(duì)于什么是 Vagrant ,以及它為什么是 X 平臺(tái)開發(fā)人員必備的工具,我認(rèn)為無需贅述。

  2. Docker 已經(jīng)為我自動(dòng)下載了一些 Linux 發(fā)行版的鏡像(這些鏡像會(huì)被 Vagrant 使用,在 hypervisor 上運(yùn)行)。

  3. 現(xiàn)在我能夠以至少兩種方式創(chuàng)建我自己的容器(正在運(yùn)行的,實(shí)現(xiàn)資源隔離的應(yīng)用程序):

  • ***種方式是制作一個(gè)用命令配置好的 Dockerfile ,這個(gè) Dockerfile 基于干凈的 Linux 鏡像來生成,同時(shí)這些命令也使用了非常簡(jiǎn)單的 DSL (領(lǐng)域特定語(yǔ)言)。這種方式是我比較喜歡的,而且確實(shí)實(shí)用。
  • 第二種方式是創(chuàng)建一個(gè)運(yùn)行著終端的全新的容器,這樣的話你就可以在終端上執(zhí)行你自己的命令,來做到你自己想做的事情。

 
 
  1. sudo docker build    
  2. ...  
  3. or    
  4. ...  
  5. sudo docker run -i -t  /bin/bash   

有些重要的事情需要記住

  1. 如果在 Dockerfile 里的命令執(zhí)行完了,或者是通過 run 這個(gè)子命令運(yùn)行的命令執(zhí)行完了(因?yàn)樗鼈儾⒉皇?daemon 程序),那么容器就會(huì)關(guān)閉并且消失!

  2. 當(dāng)容器正在運(yùn)行時(shí),你可以十分方便地:

  • 查看容器中命令的輸出(docker logs)
  • 掛載到運(yùn)行的容器(docker attach)
  • 列出容器內(nèi)文件系統(tǒng)的實(shí)際變化(記得不同的容器并不能看到其他容器的變化?。╠ocker diff)
  • 暴露并且映射容器中的端口(比如,如果你正在搭建一個(gè)應(yīng)用程序,而該應(yīng)用程序在容器內(nèi)已經(jīng)有了相應(yīng)的端口)(在 dockerfile 中的 EXPOSE 選項(xiàng),Docker 命令的 -p 選項(xiàng))
  1. 如果你想要通過手動(dòng)執(zhí)行命令的方式創(chuàng)建你自己的容器(run),你需要存儲(chǔ)你自己的鏡像 - 首先你需要在正在運(yùn)行的容器列表里找到你想要的容器,然后執(zhí)行commit命令:

 
 
  1. sudo docker ps    
  2. sudo commit    

通過使用以上所有的選項(xiàng)...

...我能夠:

  • 使用應(yīng)用組件的任何組合來組成我的本地開發(fā)環(huán)境,添加或者刪除一個(gè)運(yùn)行時(shí)組件就如同開啟或者關(guān)閉容器那么簡(jiǎn)單。一旦我關(guān)閉了某個(gè)應(yīng)用組件,那么它也從文件系統(tǒng)中完全消失了。
  • 非常方便地(回滾/前滾)創(chuàng)建出獨(dú)立的,隔離的應(yīng)用容器,同時(shí)又不像虛擬鏡像那樣會(huì)耗費(fèi)許多時(shí)間,也沒有不必要的操作系統(tǒng)開銷。
  • 實(shí)驗(yàn)一系列很有意思的事情,卻幾乎不會(huì)冒重頭來過的風(fēng)險(xiǎn)(有鑒于此,Chef recipe 已經(jīng)過時(shí)了...)。

...在我做到以上所有事情的同時(shí),我的操作系統(tǒng)卻堅(jiān)如磐石:我不會(huì)破壞任何事情,我可以很簡(jiǎn)單地回滾我做的任何操作。安裝其他的容器也不會(huì)互相影響。

總之,在幾周的時(shí)間里,我已經(jīng)把 Docker 作為了我的主要的軟件開發(fā)工具?,F(xiàn)在我已經(jīng)無法想象缺少了 Docker 我該怎樣進(jìn)行基于 JVM 的開發(fā)工作了。


標(biāo)題名稱:如何使用 Docker 來協(xié)助 X 系統(tǒng)上的開發(fā)工作
當(dāng)前鏈接:http://www.dlmjj.cn/article/djseosd.html