乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Docker運(yùn)維之最佳實(shí)踐

       yi321yi 2017-04-11

      容器技術(shù)的發(fā)展可以分為兩個階段,第一個階段聚焦在IaaS層,僅僅把容器當(dāng)做更輕量級虛擬機(jī)來使用,解決了應(yīng)用運(yùn)行時進(jìn)程級資源隔離的問題;隨著Docker的出現(xiàn),容器虛擬化才有了統(tǒng)一的平臺,由此容器技術(shù)發(fā)展到了第二個階段,開始聚焦在PaaS層,以應(yīng)用為中心,統(tǒng)一應(yīng)用分發(fā)標(biāo)準(zhǔn),實(shí)現(xiàn)DevOps。

      本篇將針對操作系統(tǒng)、主機(jī)配置、容器鏡像、容器運(yùn)行時、Docker Daemon參數(shù)、Docker Daemon權(quán)限六大方面分享一些docker的運(yùn)維經(jīng)驗(yàn);

      操作系統(tǒng)

      1.支持的操作系統(tǒng)類型

      目前Docker官方支持的操作系統(tǒng)包含桌面版、服務(wù)器版、云提供商以及容器操作系統(tǒng),具體如下:

      • 桌面版:Mac、Windows;

      • 服務(wù)器版:Windows Server、Centos、Debian、Fedora、Oracle Linux、RHEL、SLES、Ubuntu;

      • 云提供商:AWS、Azure、阿里云等;

      • 容器操作系統(tǒng):RancherOS、CoreOS、Atomic、Photon;

      2.操作系統(tǒng)的選擇標(biāo)準(zhǔn)

      有關(guān)操作系統(tǒng)的選擇不能一概而論。首先,企業(yè)本身也有對操作系統(tǒng)的規(guī)定;其次,應(yīng)用的不同也要求的操作系統(tǒng)不同;基于以上兩點(diǎn),若沒有其他要求,相對而言采用容器操作系統(tǒng)有很大的優(yōu)勢。

      容器操作系統(tǒng)相對于其他操作系統(tǒng)的優(yōu)勢有以下幾點(diǎn):

      • 精簡安全:容器操作系統(tǒng)只包含運(yùn)行容器所需的必要軟件和必要的管理工具,相比傳統(tǒng)的操作系統(tǒng)而言會精簡很多;所有應(yīng)用通過容器的方式運(yùn)行,從而使操作系統(tǒng)和應(yīng)用軟件隔離開來,極大降低了出現(xiàn)安全漏洞的概率;

      • 升級回滾:系統(tǒng)采用可回滾的雙分區(qū)模式,活動的分區(qū)通過只讀方式掛載,另外一個分區(qū)用來自動更新, 通過切換系統(tǒng)分區(qū)即可實(shí)現(xiàn)快速升級,升級出現(xiàn)問題時,可以快速切換回原來的分區(qū)保證系統(tǒng)可用;

      • 集群模式:在系統(tǒng)安裝的時候便可自動加入內(nèi)置的ETCD集群中,每個系統(tǒng)都可以通過本機(jī)的ETCD讀取或發(fā)布配置信息和狀態(tài)數(shù)據(jù),通過選舉形式在服務(wù)器之中選舉Leader來同步數(shù)據(jù),并以此確保集群之內(nèi)信息始終可用;

      主機(jī)配置

      從安全性、穩(wěn)定性、可靠性來講,如何合理規(guī)劃Docker運(yùn)行環(huán)境非常重要,也是Docker運(yùn)維的基礎(chǔ)條件,下面會從容器分區(qū)、系統(tǒng)內(nèi)核、Docker版本、Docker Daemon訪問控制及日志審計(jì)來講講怎么規(guī)劃:

      • 單獨(dú)為容器劃分一個分區(qū)作為容器的存儲空間:所有容器的數(shù)據(jù)、元數(shù)據(jù)默認(rèn)都存儲在/var/lib/docker下(當(dāng)然可以修改docker容器默認(rèn)的存儲路徑),很容易造成爭搶磁盤空間,導(dǎo)致系統(tǒng)崩潰,推薦在內(nèi)部存儲中單獨(dú)劃分一個分區(qū)掛載到該目錄上,同樣的方法也可以使用外部存儲;

      • 使用比較新且穩(wěn)定的Linux內(nèi)核:官方推薦Linux內(nèi)核版本為3.10 ,但是有些功能模塊要求的內(nèi)核版本更高,如支持MacVlan網(wǎng)絡(luò)模塊就需要內(nèi)核版本為3.9 ,這個時候就得權(quán)衡一下Linux內(nèi)核版本的選擇,推薦采用該功能模塊推薦的內(nèi)核版本;

      • 使用比較新且穩(wěn)定的Docker版本:官方推薦的Docker版本為1.9.1 ,但從實(shí)施和運(yùn)維經(jīng)驗(yàn)來看,推薦選擇比較穩(wěn)定的1.12.1版本;

      • 只允許可信任的用戶來控制Docker Daemon:Docker Daemon控制需要root特權(quán),推薦將可信任的用戶加入到一個組中,并將整個組授予root特權(quán);

      • 增加Docker Daemon及其相關(guān)文件、目錄的日志審計(jì):Docker Daemon作為Docker的后臺守護(hù)進(jìn)程,對其訪問控制、行為操作做日志審計(jì)是非常有必要的,一旦出現(xiàn)問題,很方便進(jìn)行定位,推薦增加Docker文件(docker、daemon.json、docker.service、docker.sock)和目錄(/var/lib/docker、/etc/docker、/usr/bin)的日志審計(jì);

      容器鏡像

      鏡像是容器運(yùn)行的基礎(chǔ),所以鏡像的安全至關(guān)重要,包括基礎(chǔ)鏡像的安全、軟件包的漏洞、暴露的端口、SSH服務(wù)、非root用戶等;

      • 使用可信任的鏡像來創(chuàng)建容器:Docker官方或非官方的鏡像有很多漏洞,若使用它們來運(yùn)行容器,很容易被攻擊,建議使用Docker官方認(rèn)證過的鏡像,或是自己構(gòu)建的鏡像(建議采用Alpine作為基礎(chǔ)鏡像),并通過漏洞掃描工具(如Clair);也可以使用容器安全產(chǎn)品,類似AppSafe之類,可以全方位的保障鏡像和容器運(yùn)行時的安全;

      • 在容器里面盡量不要安裝不必要的軟件:不必要的軟件會占用磁盤的空間,也會增加系統(tǒng)的安全威脅;有些容器云公司也會提供鏡像瘦身的服務(wù),如有容云等;

      • 創(chuàng)建一個非root用戶的容器:容器擁有root權(quán)限,很容易讓人通過容器的root權(quán)限攻擊所在的宿主機(jī),可以在制作鏡像的時候指定用戶,如:RUN useradd -d /home/username -m -s /bin/bash username;

      • 開啟Docker的Content Trust選項(xiàng):Content Trust會將數(shù)據(jù)通過數(shù)字簽名發(fā)送到遠(yuǎn)程的Docker Registries或是從遠(yuǎn)程的Docker Registries接收數(shù)據(jù),用來保證鏡像在build, create, pull, push, run過程中沒有被篡改,開啟命令:export DOCKER_CONTENT_TRUST=1;

      容器運(yùn)行時參數(shù)

      容器運(yùn)行時的一些參數(shù)設(shè)置,在整個容器運(yùn)行過程中非常重要,設(shè)置不好會嚴(yán)重影響容器的安全性、性能,下面就講講容器運(yùn)行時需要考慮設(shè)置的一些比較重要的參數(shù)。

      • 為容器創(chuàng)建一個AppArmor Profile文件:AppArmor Profile文件里面包含了各種威脅的安全策略,通過它可以保護(hù)宿主機(jī)系統(tǒng)和應(yīng)用程序的各種威脅,設(shè)置參數(shù)如:docker run –interactive –tty –security-opt=”apparmor:PROFILENAME” centos /bin/bash。 
        開啟SELinux Security選項(xiàng):SELinux提供了強(qiáng)制訪問控制,增強(qiáng)了自主訪問模型,可以通過SELinux為系統(tǒng)增加一層額外的安全層,設(shè)置參數(shù)如:docker run –interactive –tty –security-opt label=level:TopSecret centos /bin/bash。

      • 為容器限制Linux內(nèi)核的Capabilities能力:Linux把原來和超級用戶相關(guān)的高級權(quán)限劃分成為不同的單元,稱為Capability,這樣就可以獨(dú)立對特定的Capability進(jìn)行開啟或禁止,來增加容器的安全,設(shè)置參數(shù)如:docker run –interactive –tty –cap-drop=all –cap-add={“NET_ADMIN”,”SYS_ADMIN”} centos:latest /bin/bash。以只讀的模式掛載容器的root文件系統(tǒng),設(shè)置參數(shù)如:docker run –interactive –tty –read-only –volume /centdata centos /bin/bash

      • 設(shè)置容器在失敗的時候嘗試重啟的次數(shù):若不設(shè)置的話,重啟則會不斷的嘗試重啟,參數(shù)如:docker run –detach –restart=on-failure:5 nginx。

      • 不要掛載宿主機(jī)上敏感的目錄到容器上,或是以只讀的方式掛載:如宿主機(jī)上這些目錄:/、/boot、/dev、/etc、/lib、/proc、/sys、/usr;

      • 在容器里面最好不要運(yùn)行ssh服務(wù):使用docker exec 或 docker attach來查看容器實(shí)例;

      • 容器運(yùn)行時不要映射privileged的端口:處于安全考慮,privileged的TCP/IP端口約束在1024以下,一般的用戶是不能使用這個端口;

      Docker Daemon參數(shù)

      Docker Daemon為Docker的守護(hù)進(jìn)程,大致可以分為Docker Server、Engine和Job三部分。Docker Daemon可以認(rèn)為是通過Docker Server模塊接受Docker Client的請求,并在Engine中處理請求,然后根據(jù)請求類型,創(chuàng)建出指定的Job并運(yùn)行。

      以下為Docker Daemon的架構(gòu)示意圖:

      從上圖不難看出Docker Daemon的核心地位,所以它的配置也尤為重要,下文會從安全、性能方面入手,下面具體講講該怎么配置Docker Daemon參數(shù):

      限制容器之間網(wǎng)絡(luò)通信:在同一臺主機(jī)上若不限制容器之間通信,容器之間就會暴露些隱私的信息,所以推薦關(guān)閉,設(shè)置參數(shù)如:docker daemon –icc=false;

      • 日志級別設(shè)置為info:這樣除了debug信息外,可以捕獲所有的信息,設(shè)置參數(shù)如: docker daemon –log-level=”info”;

      • 允許Docker Daemon修改iptables:這樣可以自動避開錯誤的網(wǎng)絡(luò)配置導(dǎo)致的容器和外部的訪問問題,設(shè)置參數(shù)如:docker daemon –iptables=true;

      • 使用安全模式訪問鏡像倉庫:Docker Daemon支持安全模式(默認(rèn))和非安全模式(–insecure-registry)訪問鏡像倉庫,推薦鏡像倉庫配置CA證書,Docker Daemon配置安全訪問模式,采用TLS安全傳輸協(xié)議; 
        推薦使用Overlayfs作為Docker的存儲驅(qū)動:Docker支持很多種儲存驅(qū)動,CentOS默認(rèn)的Docker存儲驅(qū)動為devicemapper,Ubuntu默認(rèn)的Docker存儲驅(qū)動為aufs,那Docker儲存驅(qū)動該怎么選擇呢,可以參考下圖的對比分析:

      推薦為Docker Daemon配置TLS認(rèn)證:推薦指定Docker Daemon的監(jiān)聽IP、端口及unix socket,并配置TLS認(rèn)證,通過Docker Daemon的IP 端口訪問,設(shè)置參數(shù)如: ‘–tlsverify’ 、’–tlscacert’ 、’–tlscert’、’–tlskey’ ;

      推薦為Docker Daemon開啟用戶空間支持: Docker Daemon支持Linux內(nèi)核的user namespace,為Docker宿主機(jī)提供了額外的安全,容器使用有root權(quán)限的用戶,則這個用戶亦擁有其宿主機(jī)的root權(quán)限,外部可以通過容器反向來操控宿主機(jī),設(shè)置參數(shù)如:docker daemon –userns-remap=default;

      推薦為Docker Daemon配置默認(rèn)的CGroup:某個程序可能會出現(xiàn)占用主機(jī)上所有的資源,導(dǎo)致其他程序無法正常運(yùn)行,或者造成系統(tǒng)假死無法維護(hù),這時候用 cgroups 就可以很好地控制進(jìn)程的資源占用,設(shè)置參數(shù)如:docker daemon –cgroup-parent=/foobar;

      推薦為Docker配置集中的遠(yuǎn)程日志收集系統(tǒng): Docker支持很多種日志驅(qū)動,配置集中的遠(yuǎn)程日志系統(tǒng)用來存儲Docker日志是非常有必要的,設(shè)置參數(shù)如:docker run –log-driver=syslog –log-opt syslog-address=tcp://ip;

      推薦使用Docker Registry v2版本: v2版本在性能與安全性方面比v1都增強(qiáng)了很多,如安全性上的鏡像簽名,可設(shè)置參數(shù)如:docker daemon –disable-legacy-registry;

      Docker Daemon權(quán)限

      Docker Daemon相關(guān)文件和目錄的屬性及其權(quán)限關(guān)系到整個Docker運(yùn)行時的安全,從運(yùn)維角度來看,合理的規(guī)劃好屬性及其權(quán)限尤為重要,下面具體講講該怎么配置Docker Daemon權(quán)限。

      1.設(shè)置Docker Daemon一些相關(guān)配置文件的屬性及其權(quán)限

      2.設(shè)置Docker Daemon一些相關(guān)目錄的屬性及其權(quán)限

      /etc/docker目錄保存的是容器認(rèn)證及key信息, 設(shè)置目錄的屬性為root:root,權(quán)限為755;

      /etc/docker/certs.d/目錄保存的是registry證書相關(guān)的文件,設(shè)置目錄的屬性為root:root,權(quán)限為444。


      由CSDN主辦的中國云計(jì)算技術(shù)大會(CCTC 2017)將于5月18-19日在北京召開,Spark、Container、區(qū)塊鏈、大數(shù)據(jù)四大主題峰會震撼襲來,包括Mesosphere CTO Tobi Knaup,Rancher labs 創(chuàng)始人梁勝、Databricks 工程師 Spark commiter 范文臣等近60位技術(shù)大牛齊聚京城,為云計(jì)算、大數(shù)據(jù)以及人工智能領(lǐng)域開發(fā)者帶來一場技術(shù)的盛大Party?,F(xiàn)在報(bào)名,只需399元就可以聆聽近60場的頂級技術(shù)專家分享,還等什么,登陸官網(wǎng)(http://cctc.csdn.net/),趕快報(bào)名吧!


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多