1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        cockerC 語(yǔ)言實(shí)現(xiàn)的容器引擎

        聯(lián)合創(chuàng)作 · 2023-09-27 15:39

        1. 概述

        1.1. cocker是什么

        cocker是我個(gè)人用C語(yǔ)言完全自研的容器引擎(對(duì)標(biāo)Docker),主要解決如下工作場(chǎng)景中的痛點(diǎn):

        • 原生支持多進(jìn)程架構(gòu)的容器使用模式,無(wú)須引入第三方組件。

        • 按虛擬主機(jī)方式管理容器,交互式構(gòu)建鏡像,寫過(guò)復(fù)雜Dockerfile的人都深惡痛絕。

        • 鏡像多版本共存管理。

        • (更多...)

        cocker使用到了以下Linux底層技術(shù):LXC、cgroupoverlayfs、iptables、ptms等。

        1.2. 系統(tǒng)架構(gòu)

        images/cocker_architecture.png

        在LXC中,容器只是內(nèi)核命名空間隔離的根進(jìn)程以及子進(jìn)程樹,隔離域有主機(jī)名字、進(jìn)程空間、根文件系統(tǒng)、IPC、網(wǎng)絡(luò)等。cocker完整的實(shí)現(xiàn)了以上所有隔離域,在容器管理設(shè)計(jì)上傾向于虛擬主機(jī)方式,也支持類似Docker的單進(jìn)程方式。

        cocker自帶了容器根進(jìn)程,負(fù)責(zé)通過(guò)偽終端方式橋接容器內(nèi)外,而不是必須通過(guò)ssh

        cgroup負(fù)責(zé)隔離域的系統(tǒng)資源管控,包括CPU、內(nèi)存等。

        1.2.1. 狀態(tài)遷移圖

        images/cocker_state_transition_diagram.png

        cocker鏡像可以本地構(gòu)建或從鏡像庫(kù)上傳下載,鏡像庫(kù)目前只支持ssh服務(wù)端,后續(xù)版本中會(huì)加入cocker原生服務(wù)器。

        cocker鏡像允許不同版本共存,創(chuàng)建容器時(shí)可以指定鏡像版本,或者默認(rèn)最新版。鏡像可以復(fù)制和刪除,也可以修改版本號(hào)。

        cocker容器創(chuàng)建出來(lái)后可以啟動(dòng)、關(guān)閉和銷毀。修改容器屬性如虛擬IP、端口映射和卷映射必須在容器關(guān)閉狀態(tài)下進(jìn)行。

        cocker鏡像可以轉(zhuǎn)化為cocker容器便于交互式修改,然后再轉(zhuǎn)化回來(lái)。

        1.2.2. 層疊文件系統(tǒng)

        images/cocker_overlayfs.png

        層疊文件系統(tǒng)是多鏡像容器的存儲(chǔ)基礎(chǔ),cocker采用overlayfs作為其層疊文件系統(tǒng)引擎,可以疊加幾乎無(wú)限的鏡像層。

        cocker的鏡像和容器等都存放在環(huán)境變量COCKER_HOME指向的主目錄中,所以規(guī)劃其容量是使用前必須要考慮的問題。如果沒有設(shè)置環(huán)境變量COCKER_HOME,則默認(rèn)指向/var/cocker。

        COCKER_HOME主目錄中有鏡像主目錄images、容器主目錄containers、ssh鏡像倉(cāng)庫(kù)srepo,以及日志文件cocker.log。

        1.2.3. 網(wǎng)絡(luò)

        images/cocker_network.png

        cocker支持三種網(wǎng)絡(luò)模型:HOST、CUSTOM和BRIDGE。

        網(wǎng)絡(luò)模型 說(shuō)明
        HOST 無(wú)預(yù)置網(wǎng)絡(luò)環(huán)境
        CUSTOM 僅僅預(yù)置網(wǎng)絡(luò)命名空間,不創(chuàng)建容器內(nèi)外網(wǎng)卡等,由完全由用戶自設(shè)置
        BRIDGE 預(yù)置以NAT方式的容器向宿主機(jī)的網(wǎng)絡(luò)連通方式、自定義多組指定端口映射轉(zhuǎn)發(fā)的宿主機(jī)向容器的網(wǎng)絡(luò)連通方式

        首次執(zhí)行cocker會(huì)創(chuàng)建網(wǎng)橋設(shè)備cocker0,網(wǎng)段為166.88.0.x

        1.2.4. 系統(tǒng)資源限制

        images/cocker_cgroup.png

        cocker目前只實(shí)現(xiàn)了CPU核分配、時(shí)間片占用百分比分配、內(nèi)存分配,其它系統(tǒng)資源在后續(xù)版本中會(huì)逐漸完善。

        1.2.5. 偽終端

        images/cocker_pty.png

        自帶容器根進(jìn)程接受客戶端cocker連接后會(huì)創(chuàng)建偽終端會(huì)話,就像登錄到虛擬主機(jī)上命令交互一樣,無(wú)需使用ssh。

        1.3. 快速使用

        使用主控工具cocker快速創(chuàng)建一個(gè)小型測(cè)試鏡像,里面調(diào)用了自帶腳本cocker_install_test.sh構(gòu)建根文件系統(tǒng)。

        然后使用指令-a boot基于剛剛創(chuàng)建的鏡像test啟動(dòng)一個(gè)容器test,并且直接打開一個(gè)會(huì)話連接到容器中的偽終端...退出偽終端后,使用指令-a shutdown關(guān)閉容器,最后使用指令-a destroy銷毀容器。

        # cocker -a install_test
        OK
        # cocker -s images
        image_id                       version    modify_datetime     size      
        --------------------------------------------------------------------
        test                           _          2018-11-10T09:21:12 24 MB
        # cocker -a create -m test -c test
        OK
        # cocker -a boot -c test -t   
        connect to container ok
        --- Welcome to cocker contrainer ---
        
        [root@test /root] exit
        logout
        # cocker -a shutdown -c test
        OK
        # cocker -a destroy -c test
        OK

        ...

        2. 最后

        2.1. 關(guān)于cocker

        歡迎使用cocker,如果你使用中碰到了問題請(qǐng)告訴我,謝謝 ^_^

        源碼托管地址 : 開源中國(guó)github

        2.2. 關(guān)于作者

        厲華,主手C,寫過(guò)小到性能卓越方便快捷的日志庫(kù)、HTTP解析器、日志采集器等,大到交易平臺(tái)/中間件等,分布式系統(tǒng)實(shí)踐者,容器技術(shù)愛好者,目前在某城商行負(fù)責(zé)基礎(chǔ)架構(gòu)。

        通過(guò)郵箱聯(lián)系我 : 網(wǎng)易Gmail

        瀏覽 45
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操美女嫩逼视频 | 欧美色就是色操逼视频 | 台湾成人中文网 | 色婷婷久久久久 | 欧美靠比| 精品成人无码麻豆 | 亚洲AV免费 | 亚洲色偷拍视频 | 91黄视频下载 | 天干夜天干夜天天免费视频 |