国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker的典型應(yīng)用場景

anyway / 2732人閱讀

摘要:接下來,執(zhí)行以下命令把生成的軟件包從鏡像中復(fù)制出來然后目錄下就會有我們剛剛制作的包。多版本混合部署隨著產(chǎn)品的不斷更新?lián)Q代,一臺服務(wù)器上部署多個應(yīng)用或者同一個應(yīng)用的多個版本在企業(yè)內(nèi)部非常常見。作者魏世江聯(lián)合創(chuàng)始人,長期從事相關(guān)研發(fā)工作。

相對于VM,docker在其輕量、配置復(fù)雜度以及資源利用率方面有著明顯的優(yōu)勢。
隨著docker技術(shù)的不斷成熟,越來越多的企業(yè)開始考慮通過docker來改進(jìn)自己的IT系統(tǒng)。

本文列舉一些docker的實(shí)際應(yīng)用場景,以期能夠起到拋磚引玉的作用,
來幫助大家更加方便的使用docker.

應(yīng)用打包

制作過RPM、GEM等軟件包的同學(xué)可能很清楚,每一個軟件包依賴于哪個庫的哪個版本,
往往需要明確的寫在依賴列表里。而依賴又往往分為編譯時依賴和運(yùn)行時依賴。

在傳統(tǒng)的基礎(chǔ)設(shè)施環(huán)境下,為了保證所生成的軟件包在其它機(jī)器上可正常安裝且運(yùn)行,
一般需要在打包之前創(chuàng)建個干凈的虛擬機(jī),或者手工創(chuàng)建個chroot環(huán)境,
然后在這個干凈的環(huán)境下安全各種依賴包,然后執(zhí)行打包腳本。
生成軟件包以后,需要再創(chuàng)建一個干凈的環(huán)境安裝、運(yùn)行這個軟件包,來驗(yàn)證是否符合預(yù)期。
這樣雖然也能完成打包工作,但至少有以下缺點(diǎn):

耗時耗力

依賴關(guān)系容易漏掉,比如:在干凈的環(huán)境中經(jīng)過多次調(diào)試,把缺少的依賴包一個一個的裝上了,但最后寫spec文件時卻忘記添加某個依賴,導(dǎo)致下次打包時需要重新調(diào)試或者打包后軟件包無法使用等問題。

通過docker可以很好的解決打包問題。具體作法如下:

“干凈的打包環(huán)境”很容易準(zhǔn)備,docker官方提供的ubuntu、centos等系統(tǒng)鏡像天生就能作為純凈無污染的打包環(huán)境使用

Dockerfile本身能起到文檔固化的作用,只要寫好Dockerfile,創(chuàng)建好打包鏡像,以后就能無限次重復(fù)使用這個鏡像進(jìn)行打包

示例:

我們要為某個PHP擴(kuò)展模塊(如:php-redis)制作個RPM包。

首先,需要寫個用于創(chuàng)建打包鏡像的Dockerfile, 內(nèi)容如下:

FROM centos:centos6  
RUN yum update -y  
RUN yum install -y php-devel rpm-build tar gcc make  
RUN mkdir -p /rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} &&   
  echo "%_topdir /rpmbuild" > ~/.rpmmacros
ADD http://pecl.php.net/get/redis-2.2.7.tgz /rpmbuild/SOURCES/redis-2.2.7.tgz  
ADD https://gist.githubusercontent.com/mountkin/5175c213585d485db31e/raw/02f6dce79e12b692bf39d6337f0cfa72813ce9fb/php-redis.spec /redis.spec  
RUN rpmbuild -bb /redis.spec  

然后執(zhí)行docker build -t php-redis-builder ., 執(zhí)行成功后,就會生成我們需要的RPM包。

接下來,執(zhí)行以下命令把生成的軟件包從docker鏡像中復(fù)制出來:

[ -d /rpms ] || mkdir /rpms
docker run --rm -v /rpms:/rpms:rw php-redis-builder cp /rpmbuild/RPMS/x86_64/php-redis-2.2.7-1.el6.x86_64.rpm /rpms/  

然后/rpms目錄下就會有我們剛剛制作的RPM包。

最后,軟件包的驗(yàn)證過各也非常簡單,只需要新創(chuàng)建一個docker鏡像,把新生成的軟件包添加進(jìn)去并安裝即可。

Dockerfile如下(為了ADD RPM文件,需要保存在/rpms目錄下):

FROM centos:centos6  
ADD php-redis-2.2.7-1.el6.x86_64.rpm /php-redis-2.2.7-1.el6.x86_64.rpm  
RUN yum localinstall -y /php-redis-2.2.7-1.el6.x86_64.rpm  
RUN php -d "extension=redis.so" -m |grep redis  

在/rpms目錄下執(zhí)行docker build -t php-redis-validator .,如果執(zhí)行成功,則表明RPM包可正常工作。

多版本混合部署

隨著產(chǎn)品的不斷更新?lián)Q代,一臺服務(wù)器上部署多個應(yīng)用或者同一個應(yīng)用的多個版本在企業(yè)內(nèi)部非常常見。

但一臺服務(wù)器上部署同一個軟件的多個版本,文件路徑、端口等資源往往會發(fā)生沖突,造成多個版本無法共存的問題。

如果用docker,這個問題將非常簡單。由于每個容器都有自己獨(dú)立的文件系統(tǒng),所以根本不存在文件路徑?jīng)_突的問題;
對于端口沖突問題,只需要在啟動容器時指定不同的端口映射即可解決問題。

升級回滾

一次升級,往往不僅僅是應(yīng)用軟件本身的升級,通過還會包含依賴項(xiàng)的升級。
但新舊軟件的依賴項(xiàng)很可能是不同的,甚至是有沖突的,所以在傳統(tǒng)的環(huán)境下做回滾一般比較困難。

如果使用docker,我們只需要每次應(yīng)用軟件升級時制作一個新的docker鏡像,升級時先停掉舊的容器,
然后把新的容器啟動。 需要回滾時,把新的容器停掉,舊的啟動即可完成回滾,整個過程各在秒級完成,非常方便。

多租戶資源隔離

資源隔離對于提供共享hosting服務(wù)的公司是個強(qiáng)需求。
如果使用VM,雖然隔離性非常徹底,但部署密度相對較低,會造成成本增加。

docker容器充分利用linux內(nèi)核的namespaces提供資源隔離功能。

結(jié)合cgroup,可以方便的設(shè)置某個容器的資源配額。
既能滿足資源隔離的需求,又能方便的為不同級別的用戶設(shè)置不同級別的配額限制。

但在這種應(yīng)用場景下,由于容器中運(yùn)行的程序?qū)τ趆osting服務(wù)提供方來說是不可信的,
所以需要特殊的手段來保證用戶無法從容器中操作到宿主機(jī)的資源(即:越獄,盡管這種問題發(fā)生的概率很小,但安全無小事,多一層防護(hù)肯定讓人更加放心)。

安全及隔離性加固方面,可考慮以下措施:

通過iptables阻斷從容器到所有內(nèi)網(wǎng)IP的通信(當(dāng)然如果需要也可以針對特定的IP/端口開放權(quán)限)2. 通過selinux或者apparmor限制某個容器所能訪問的資源3. 對某些sysfs或者procfs目錄,采用只讀方式掛載4. 通過grsec來加固系統(tǒng)內(nèi)核5. 通過cgroup對內(nèi)存、CPU、磁盤讀寫等資源進(jìn)行配額控制6. 通過tc對每個容器的帶寬進(jìn)行控制

另外我們在實(shí)際測試中發(fā)現(xiàn)系統(tǒng)的隨機(jī)數(shù)生成器很容易因熵源耗盡而發(fā)生阻塞。
在多租戶共享環(huán)境下需要在宿主機(jī)上啟用rng-tools來補(bǔ)充熵源。

這個應(yīng)用場景下有很多工作是docker本身所不能提供的,并且實(shí)施起來需要關(guān)注的細(xì)節(jié)比較多。
為此我們提供了安全加強(qiáng)版docker管理平臺,可完美解決以上問題。
需要的朋友可以通過csphere官網(wǎng)了解更多細(xì)節(jié)。

內(nèi)部開發(fā)環(huán)境

在容器技術(shù)出現(xiàn)之前,公司往往是通過為每個開發(fā)人員提供一臺或者多臺虛擬機(jī)來充當(dāng)開發(fā)測試環(huán)境。

開發(fā)測試環(huán)境一般負(fù)載較低,大量的系統(tǒng)資源都被浪費(fèi)在虛擬機(jī)本身的進(jìn)程上了。

docker容器沒有任何CPU和內(nèi)存上的額外開銷,很適合用來提供公司內(nèi)部的開發(fā)測試環(huán)境。

而且由于docker鏡像可以很方便的在公司內(nèi)部分享,這對開發(fā)環(huán)境的規(guī)范性也有極大的幫助。

如果要把容器作為開發(fā)機(jī)使用,需要解決的是遠(yuǎn)程登錄容器和容器內(nèi)進(jìn)程管理問題。
雖然docker的初衷是為“微服務(wù)”架構(gòu)設(shè)計(jì)的,但根據(jù)我們的實(shí)際使用經(jīng)驗(yàn),
在docker內(nèi)運(yùn)行多個程序,甚至sshd或者upstart也是可行的。

這方面csphere也有成熟的產(chǎn)品及解決方案,歡迎感興趣的朋友試用反饋。

后記

以上總結(jié)了我們在實(shí)際開發(fā)和生產(chǎn)環(huán)境中使用docker的一些場景,
以及在每種情況下遇到的問題和相應(yīng)的解決方法,希望對有意使用docker的朋友有所啟發(fā)。
同時我們也歡迎更多的朋友分享關(guān)于docker的使用經(jīng)驗(yàn)。

作者:
魏世江, NiceScale聯(lián)合創(chuàng)始人,長期從事DevOps相關(guān)研發(fā)工作。
專注于Linux環(huán)境Web應(yīng)用及周邊服務(wù)的配置管理自動化。擅長使用go語言及PHP語言,
對容器技術(shù)有一定的研究,目前正集中精力做基于docker的企業(yè)級解決方案。
創(chuàng)業(yè)之前在新浪云平臺(SAE)任技術(shù)經(jīng)理。歡迎志同道合的朋友以各種方式勾搭騷擾。

聯(lián)系方式:

Email: mountkin@gmail.com

微博: @魏世江

微信: nfa123

原文 https://blog.nicescale.com/docker-use-cases/

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26380.html

相關(guān)文章

  • DCOS應(yīng)用案例-不同場景應(yīng)用上云遷移

    摘要:極大地降低了平臺的復(fù)雜度,更加方便企業(yè)開發(fā)人員實(shí)現(xiàn)各種業(yè)務(wù)應(yīng)用,幫助企業(yè)輕松打造基于云計(jì)算的軟件基礎(chǔ)設(shè)施。本文將從實(shí)際案例出發(fā),結(jié)合不同的使用場景,為各位介紹的這些特性。是未來數(shù)據(jù)中心操作系統(tǒng)的核心。 0.前言 隨著 Docker 技術(shù)的日漸火熱,本就火爆的云計(jì)算行業(yè)進(jìn)入了一個加速階段。云計(jì)算最大的特點(diǎn)是彈性和靈活,幫助企業(yè)應(yīng)對復(fù)雜的業(yè)務(wù)需求。由于云計(jì)算的IT構(gòu)架和上一代的IT構(gòu)架有很...

    PumpkinDylan 評論0 收藏0
  • 認(rèn)識docker

    摘要:是一項(xiàng)獨(dú)立的容器管理包,以及都是通過來實(shí)現(xiàn)具體對容器進(jìn)行的操作。安裝認(rèn)識鏡像和容器鏡像容器管理什么是鏡像鏡像是一個多層的聯(lián)合只讀的文件系統(tǒng)。 一、Docker工作原理 二、Docker容器和虛擬機(jī)對比 三、鏡像容器管理 1、Docker關(guān)鍵組件 2、Docker架構(gòu) 3、Docker內(nèi)部組件 showImg(https://segmentfault.com/img/remote/146...

    go4it 評論0 收藏0
  • 史上最全Docker資料推送 ▎ Docker小白進(jìn)階大神計(jì)劃

    摘要:入冬了,寒風(fēng)呼嘯,白雪飄飄,此刻窩在家里學(xué)習(xí)應(yīng)當(dāng)是極好的。為了滿足大家的需求,小編火速為大家整理了史上最全的資料。 showImg(https://segmentfault.com/img/remote/1460000007586577?w=900&h=500); 入冬了,寒風(fēng)呼嘯,白雪飄飄,此刻窩在家里學(xué)習(xí)應(yīng)當(dāng)是極好的。為了滿足大家的需求,小編火速為大家整理了史上最全的Docker資...

    StonePanda 評論0 收藏0
  • 谷歌發(fā)布 Kubernetes 1.3 加速了容器之戰(zhàn)

    摘要:在容器之戰(zhàn)中,谷歌宣布了最新開源容器編排引擎版本。這個是谷歌對抗計(jì)劃將和核心引擎結(jié)合在一起的舉動。選擇托管環(huán)境來運(yùn)行工作伴隨著版本的發(fā)布,谷歌宣布它的托管容器管理平臺,已經(jīng)更新到最新的版本。 在容器之戰(zhàn)中,谷歌宣布了最新開源容器編排引擎Kubernetes1.3版本。此次的發(fā)布是在 Docker 公司發(fā)布 Docker 1.12 版本之后,該版本帶有內(nèi)置的 Swarm 編排功能。 雖然...

    beanlam 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<