Docker入门与七牛kirk工具
一、Docker的實(shí)現(xiàn)原理和技術(shù)前景
Docker技術(shù)是一門容器技術(shù),于2013年正式開源發(fā)行,現(xiàn)在它已經(jīng)成為了目前最流行的虛擬化技術(shù),Docker的優(yōu)點(diǎn)是“輕量型”,“可移植”,“自給自足”。
?
Docker大略執(zhí)行思想如下:
1)? 啟動(dòng)一個(gè)基礎(chǔ)鏡像(p_w_picpath),比如centos或者ubantu;
2)? Docker可以根據(jù)這個(gè)基礎(chǔ)的p_w_picpath來構(gòu)建成一個(gè)容器(container);
3)? 在這個(gè)容器上,我們可以像在普通的服務(wù)器上編寫需要的代碼,并且啟動(dòng)編寫好的服務(wù)(service);
4)? 將這些已經(jīng)編寫好的、有服務(wù)的容器重新打包成鏡像,這個(gè)鏡像可以備用也可以放在網(wǎng)絡(luò)上分享。
?
從上面幾個(gè)操作步驟來看,Docker技術(shù)與虛擬機(jī)技術(shù)有類似的效果,同樣達(dá)到在一個(gè)宿主機(jī)上運(yùn)行多個(gè)子服務(wù)器的目的,而且每一個(gè)容器之間互不干擾,就像Docker的標(biāo)志一樣:一個(gè)大鯨魚背上面有諸多個(gè)集裝箱,這些集裝箱就是裝載各種服務(wù)的容器們,而這個(gè)大鯨魚就是docker,它可以同時(shí)負(fù)載多個(gè)容器并且讓這些容器平穩(wěn)正常的運(yùn)行,不管如此,docker容器的運(yùn)行效率又是虛擬機(jī)的好多倍,可以迅速提升響應(yīng)速度也是Docker備受開發(fā)人員和運(yùn)維人員青睞的原因之一。Docker的引擎開發(fā)、二次管理以及安全策略也是時(shí)下非常火熱的技術(shù),可以說Docker 給運(yùn)維帶來了革命性的改變,大有深入乃至挖掘的必要性!
?
二、Docker的安裝以及kirk的安裝
Docker的安裝對宿主機(jī)的內(nèi)核有比較硬性的要求,Docker要求宿主機(jī)的內(nèi)核是3.1.10。也就是說Docker應(yīng)該工作在Centos 7以上的版本里,而不是我們傳統(tǒng)購買的服務(wù)器Centos 6.5版本。由于目前阿里云和金山云的Centos 6.5默認(rèn)自帶的內(nèi)核都是2.6.32,所以如果要在以上兩個(gè)廠家的Centos 6.5里正常使用Docker的話需要我們自己升級內(nèi)核。
?
在Centos 7里安裝Docker是十分簡單的,只需要#yum install Docker,而啟動(dòng)Docker也是很簡單的:#service Docker start,在運(yùn)行之后我們可以查看一下當(dāng)前Docker的版本:
如果能像如圖那樣成功顯示Docker的版本,即代表Docker已經(jīng)安裝且運(yùn)行成功。
Kirk是七牛云提供的一個(gè)管理docker容器的工具,我們可以把七牛的賬號用于kirk,使kirk專門存儲內(nèi)部的模塊鏡像,并且可以調(diào)用這些docker服務(wù),它對應(yīng)linux下載包的地址是http://7xqd3r.com1.z0.glb.clouddn.com/kirk/beta/latest/linux-amd64/kirk.tar.gz,下載完畢之后直接拆包解壓即可使用。
?
三、整個(gè)P2P的服務(wù)啟動(dòng)過程
下面我將以P2P為例,演示一下啟動(dòng)P2P服務(wù)的過程:
當(dāng)我們從開發(fā)人員手里獲取到docker file,并且將其build成一個(gè)可使用的鏡像之后。
? 1)? 登陸kirk賬戶
在七牛網(wǎng)站右上角的“個(gè)人面板”點(diǎn)擊“密鑰管理”,就會看到一對密碼分別是AK/SK,如圖所示:
在服務(wù)器端輸入#kirk login就是登陸kirk賬號,這里就對應(yīng)輸入AK和SK,輸入正確的話就是提示登入成功。
2)使用#kirk p_w_picpaths來查看kirk里所有的鏡像:
? ? ? ? 看到現(xiàn)在的kirk里面已經(jīng)有不少的docker? P2P鏡像,而且后面分別是這些鏡像建立的時(shí)間點(diǎn),我們這里需要的是p2prelay服務(wù),于是我們只需要啟動(dòng)它,但是要注意,在docker里一個(gè)鏡像是可以生成多個(gè)容器的,這些容器在出生階段是一模一樣的。但是在kirk里一個(gè)鏡像只能生成一個(gè)服務(wù)(service),如果重復(fù)的打開同一個(gè)服務(wù),會報(bào)錯(cuò)ERROR fail to start service: {"code":400,"codeName":"E30014","description":"current state is invalid to start service"}
,查看當(dāng)前運(yùn)行容器的命令是#kirk ps,因?yàn)檫@是一個(gè)新裝的機(jī)器,所以#kirk ps結(jié)果為空。
? 我們要啟動(dòng)服務(wù)的話,需要先啟動(dòng)七牛的工具,#kirk service qiniu-tool,然后再如法炮制分別啟動(dòng)對應(yīng)的服務(wù),比如啟動(dòng)relay-1、relay-2、gms等等,如圖所示:
如果這個(gè)時(shí)候想進(jìn)入到relay-1這個(gè)容器里面看一下,就使用#kirk ssh relay-1這個(gè)命令:
? ? ? ?這里發(fā)現(xiàn)hostname發(fā)生了變化,變成的10-128-128-113恰巧就是relay-1對應(yīng)的那個(gè)container編碼,在容器里這個(gè)P2PRelay已經(jīng)完全啟動(dòng)了。
?
? ?如果想要退出當(dāng)前容器,使用命令#exit就返回宿主機(jī),繼續(xù)宿主機(jī)的操作。
四、校驗(yàn)
? 啟動(dòng)服務(wù)之后,我們登陸到容器relay-1,容器就相當(dāng)于是一個(gè)虛擬機(jī),那么在這個(gè)小虛擬機(jī)里是可以查看進(jìn)程的,使用#ps –ef一下可以查看進(jìn)程,而且還可檢查一下端口以及看一下其他的服務(wù):
?? ? 由于這臺P2P只是試驗(yàn),所以bind count和angets num都是零,但是依舊可以看出服務(wù)和端口已經(jīng)是正確的了。
? ? ? ?但是目前七牛的kirk還是有一點(diǎn)問題:它只能把容器掛載到宿主機(jī)的文件夾上,而不能實(shí)現(xiàn)把容器掛載到其他云服務(wù)器的文件夾上,這一點(diǎn)在模塊的升級上有所不便,與七牛技術(shù)人員溝通,他們反饋目前在做一個(gè)類似網(wǎng)絡(luò)云盤共享的開發(fā),預(yù)計(jì)將來可以通過此途徑解決這個(gè)問題。但是在目前階段,如果涉及到模塊的更新,就需要重新編寫一個(gè)p_w_picpath,重新build成鏡像,這一點(diǎn)與原有的從掛載盤上拷貝更新腳本有很大的不同。
五、對比
在傳統(tǒng)的運(yùn)維部署下,運(yùn)維人員需要做的事情如下:
1)? 購買云服務(wù)器,對應(yīng)填寫服務(wù)器ip表格;
2)? 初始化服務(wù)器,金山區(qū)服務(wù)器還需要掛載數(shù)據(jù)盤;
3)? 檢查角色,運(yùn)行模塊安裝腳本;
4)? 將服務(wù)器內(nèi)網(wǎng)ip添加到zk配置里;
5)? 啟動(dòng)進(jìn)程,檢查zk、模塊、看門狗是否都已經(jīng)啟動(dòng);
6)? 檢查日志情況;
而在docker-kirk的環(huán)境下,運(yùn)維部署模塊的步驟:
1)??購買云服務(wù)器,對應(yīng)填寫服務(wù)器ip表格;
2) 運(yùn)維人員得到開發(fā)人員的dockerfile,將其build成一個(gè)鏡像;
3)? 使用kirk上傳其鏡像到七牛云;
4)? kirk啟動(dòng)對應(yīng)的服務(wù);
5)? 根據(jù)不同的ip需求配置ip端口;
6)? 登陸容器內(nèi)部,檢查進(jìn)程、zk、看門狗;
7)? 檢查日志情況。
?
從上所見,在docker-kirk過程里省去了腳本這一步,傳統(tǒng)模式下由于開發(fā)人員模塊編寫語言各有不同,有的是java模塊,有的是tomcat模塊,因此在啟動(dòng)上和后臺所需環(huán)境版本上均有差異,有的甚至在看門狗的配置上都有差異,而這些差異都是需要運(yùn)維人員手動(dòng)去修改腳本,而使用了docker-kirk,就可以將2、3、4步整合成一個(gè)腳本,然后通過運(yùn)行腳本直接將已經(jīng)配置好的鏡像生成到容器里部署到服務(wù)器里使用,這樣更加便捷從而提升了效率。
但是kirk的ip配置是一個(gè)難點(diǎn),而且批量端口影射服務(wù)尚不完善,這些都有待七牛開發(fā)人員后續(xù)跟進(jìn)補(bǔ)全。
六、總結(jié)?
? ?如果引用Docker技術(shù)的話,我們將來可以依舊使用阿里云、金山云的跳板機(jī)去登錄相對性能較低的云服務(wù)器,同時(shí)在服務(wù)器上安裝七牛的kirk工具,同時(shí)根據(jù)不同的模塊需求購買對應(yīng)性能的七牛云服務(wù),七牛云服務(wù)提供硬件環(huán)境,kirk作為工具,這樣兩者雙劍合并來增刪改用各種Docker鏡像,從而啟動(dòng)各種進(jìn)程。
??目前測試看來Docker的優(yōu)點(diǎn)如下:
??1)?????????保證線上與測試的環(huán)境一致,省去了中間配置各種環(huán)境的麻煩,甚至可以在同一個(gè)服務(wù)器上安裝不同獨(dú)立的服務(wù);
2)?????????快速部署,傳統(tǒng)的部署模式是:安裝(包管理工具或者源碼包編譯)->配置->運(yùn)行;Docker的部署模式是:復(fù)制->運(yùn)行;
3)?????????對云計(jì)算更加方便和友好。
而其缺點(diǎn)如下:
1)???????目前尚不支持傳統(tǒng)意義上的掛載,升級的時(shí)候需要重做鏡像;
2)???????網(wǎng)絡(luò)機(jī)制比較復(fù)雜,導(dǎo)致其大型部署比較麻煩,甚至?xí)霈F(xiàn)失控情況;
3)???????一些運(yùn)維常見功能比如crontab需要事前增加到Dockerfile里;
4) ?目前kirk不支持退出當(dāng)前賬號的功能;
轉(zhuǎn)載于:https://blog.51cto.com/chenx1242/1846337
總結(jié)
以上是生活随笔為你收集整理的Docker入门与七牛kirk工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 由SecureCRT引发的思考和学习
- 下一篇: Mozilla网站安全分析工具Obser