<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聶永的博客

    記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

    Docker學(xué)習(xí)筆記之四,構(gòu)建一個(gè)Redis as a Service(RAAS)

    Docker的抽象

    若把一臺Linxu機(jī)器比喻為一艘船,那么每一個(gè)Linux Container就好比船上的一個(gè)集裝箱。

    另外一個(gè)層面,Docker Image(鏡像)就是一個(gè)預(yù)先定義行為的模板,Docker Container(容器)是鏡像模板運(yùn)行時(shí)的狀態(tài)。一個(gè)鏡像模板,可以對應(yīng)N個(gè)容器實(shí)例運(yùn)行時(shí)。 Docker號稱,(鏡像)一處構(gòu)建,到處運(yùn)行(Container),這不是當(dāng)初Java的口號嘛!無論是工作機(jī),還是線上服務(wù)器,

    一個(gè)具體的Docker鏡像就好比一張畫板,你在上面畫什么,你們就會形成新的模板,可以循環(huán)利用。

    Docker可用于測試,可用于沙箱隔離,可用于運(yùn)行桌面,可用于作為數(shù)據(jù)/Web服務(wù)存在,總之作為一個(gè)較為完整的抽象的技術(shù)堆棧模板,好比打開了一扇窗,給予了人們?nèi)舾煞N可能性,無限的想象空間。

    構(gòu)建一個(gè)Redis as a Service鏡像

    設(shè)定企業(yè)內(nèi)部,每一個(gè)系統(tǒng)都需要獨(dú)享Redis緩存服務(wù),這不就是SAAS軟件即服務(wù)的適用場景嘛,若基于Docker上構(gòu)建,那是相當(dāng)?shù)暮唵巍J褂肈ocker腳本構(gòu)建Redis服務(wù)鏡像模板,那是相當(dāng)?shù)暮唵危?/p>

    redis.dockerfile:

    FROM        ubuntu:12.10
    RUN         apt-get update
    RUN         apt-get -y install redis-server
    EXPOSE      6379
    ENTRYPOINT  ["/usr/bin/redis-server"]
    

    接著構(gòu)建鏡像:

    docker build -t yongboy/redis -< redis.dockerfile
    

    當(dāng)然,你可以使用dns服務(wù)來通過內(nèi)部域名進(jìn)行路由定位,這里簡略。

    運(yùn)行時(shí)設(shè)置某一個(gè)Redis Server具體實(shí)例:

    docker run -name redis1_server -d -p 192.168.190.133:7001:6379 -m 1g yongboy/redis
    

    這里指定當(dāng)前運(yùn)行的實(shí)例名稱為redis1_server,分配1G內(nèi)存,以后臺進(jìn)程服務(wù)方式運(yùn)行,同時(shí)端口映射到宿主機(jī)持有第二個(gè)IP地址192.168.190.133和端口7001上。執(zhí)行上面命令,會收到當(dāng)前內(nèi)核不支持交換分區(qū)的警告信息,這里直接無視好了:

    WARNING: Your kernel does not support memory swap capabilities. Limitation discarded.
    

    在宿主技術(shù)上安裝redis客戶端,測試一下,確認(rèn)可以連接到redis1_server服務(wù)器上:

    telnet 192.168.190.133 7001
    Trying 192.168.190.133...
    Connected to 192.168.190.133.
    Escape character is '^]'.
    set docker awesome
    +OK
    get docker
    $7
    awesome
    get redis
    $-1
    

    redis1_server在運(yùn)行中,輸入 ctrl + ],輸入q退出telnet。

    運(yùn)行更多的Redis鏡像實(shí)例:

    docker run -name redis2_server -d -p 192.168.190.133:7002:6379 -m 1g yongboy/redis
    docker run -name redis3_server -d -p 192.168.190.133:7003:6379 -m 1g yongboy/redis
    docker run -name redis4_server -d -p 192.168.190.133:7004:6379 -m 1g yongboy/redis
    docker run -name redis5_server -d -p 192.168.190.133:7005:6379 -m 1g yongboy/redis
    

    宿主機(jī)只有4G內(nèi)存,那么每一個(gè)Redis Sever都會自動分配1G內(nèi)存,運(yùn)行5個(gè)實(shí)例,出現(xiàn)了資源超售現(xiàn)象:

    yongboy@localhost:~$ docker ps
    CONTAINER ID        IMAGE                  COMMAND                CREATED             STATUS              PORTS                            NAMES
    9b9d3f5fceb8        yongboy/redis:latest   /usr/bin/redis-serve   2 seconds ago       Up 1 seconds        192.168.190.133:7005->6379/tcp   redis5_server       
    caf413606999        yongboy/redis:latest   /usr/bin/redis-serve   4 seconds ago       Up 3 seconds        192.168.190.133:7004->6379/tcp   redis4_server       
    76566b33469a        yongboy/redis:latest   /usr/bin/redis-serve   4 seconds ago       Up 4 seconds        192.168.190.133:7003->6379/tcp   redis3_server       
    4e24a529c5fc        yongboy/redis:latest   /usr/bin/redis-serve   4 seconds ago       Up 4 seconds        192.168.190.133:7002->6379/tcp   redis2_server       
    5e3d9536948a        yongboy/redis:latest   /usr/bin/redis-serve   19 minutes ago      Up 19 minutes       192.168.190.133:7001->6379/tcp   redis1_server
    

    在每一個(gè)容器實(shí)例實(shí)際占用內(nèi)存都達(dá)到或接近1G時(shí),會出現(xiàn)內(nèi)存申請出現(xiàn)失敗情況。實(shí)際環(huán)境中,這個(gè)是需要盡量避免資源超售的。

    在不考慮資源超售或理想情況下,一臺服務(wù)服務(wù)器最多可虛擬多少個(gè)Redis Server容器實(shí)例呢,這個(gè)跟網(wǎng)絡(luò)資源有關(guān)。

    服務(wù)器對外暴露地址(IP:Port)為二元組,理論上一臺Linux Server可以使用的端口數(shù)量為65535個(gè)(去除常用的端口設(shè)為可用端口有65000個(gè)),本機(jī)可以綁定的IP數(shù)量 * 可用端口數(shù)量 = 單機(jī)最大可以對外提供的服務(wù)器接口地址,即Redis Server實(shí)例。這些有些無聊了 :))

    小結(jié)

    雖然Docker到現(xiàn)在還沒有釋出1.0版,但基于Docker構(gòu)建私有還是公有的Service,業(yè)界已經(jīng)給予了很好的一份答案。

    國內(nèi)已經(jīng)有百度使用Docker構(gòu)建自己的商用PAAS平臺,詳見Baidu using Docker for its PaaS。當(dāng)然了,國內(nèi)其它PAAS提供商也都在暗中使勁。

    http://www.tsuru.io/的開發(fā)者貢獻(xiàn)的tsuru and docker文檔,很好的說明了他們?nèi)绾问褂肈ocker搭建完整的PAAS平臺一些實(shí)踐事宜,包括DNS/路由、各種獨(dú)立SAAS、服務(wù)發(fā)現(xiàn)等,在架構(gòu)上還是很清晰的。

    嗯,有機(jī)會,想測測Docker中容器的性能如何。

    posted on 2013-12-31 15:39 nieyong 閱讀(9196) 評論(2)  編輯  收藏 所屬分類: 容器

    評論

    # re: Docker學(xué)習(xí)筆記之四,構(gòu)建一個(gè)Redis as a Service(RAAS) 2014-01-01 12:13 私人訂制

    MARK一下,最近剛開始接觸REDIS  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之四,構(gòu)建一個(gè)Redis as a Service(RAAS) 2014-03-20 13:59 yaxin

    如果主機(jī)重啟了,那么docker中的數(shù)據(jù)不就丟失了嗎?  回復(fù)  更多評論   

    公告

    所有文章皆為原創(chuàng),若轉(zhuǎn)載請標(biāo)明出處,謝謝~

    新浪微博,歡迎關(guān)注:

    導(dǎo)航

    <2013年12月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統(tǒng)計(jì)

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個(gè)人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品在线电影| 成人免费在线视频| 性生大片视频免费观看一级| 亚洲色欲www综合网| 综合亚洲伊人午夜网 | 国产极品粉嫩泬免费观看| 亚洲精品免费视频| 中国一级全黄的免费观看| 久久人午夜亚洲精品无码区 | 91嫩草免费国产永久入口| 精品国产呦系列在线观看免费 | 国产美女被遭强高潮免费网站| 亚洲免费视频播放| 99久久久国产精品免费蜜臀| 国产精品玖玖美女张开腿让男人桶爽免费看| 一本色道久久88—综合亚洲精品 | 7723日本高清完整版免费| 国产精品免费一区二区三区四区| 羞羞视频免费网站日本| 国产精品亚洲一区二区三区久久 | 91av免费观看| 少妇人妻偷人精品免费视频| 花蝴蝶免费视频在线观看高清版| 毛片基地看看成人免费| 国产黄在线观看免费观看不卡| 一区二区三区视频免费| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲最大的视频网站| 久久精品蜜芽亚洲国产AV| 亚洲嫩草影院久久精品| 亚洲精品免费观看| 久久久亚洲欧洲日产国码是AV| 亚洲美女视频网址| 亚洲国产精品综合福利专区| 亚洲成人福利在线| 亚洲五月综合缴情婷婷| 亚洲熟妇AV一区二区三区浪潮 | 免费在线观看黄网| 亚洲中文无韩国r级电影| 日韩高清在线免费观看| 亚洲精品午夜视频|