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