- 桌面版:Mac、Windows;
- 服務器版:Windows Server、Centos、Debian、Fedora、Oracle Linux、RHEL、SLES、Ubuntu;
- 云提供商:AWS、Azure、阿里云等;
- 容器操作系統:RancherOS、CoreOS、Atomic、Photon;

- 精簡安全:容器操作系統只包含運行容器所需的必要軟件和必要的管理工具,相比傳統的操作系統而言會精簡很多;所有應用通過容器的方式運行,從而使操作系統和應用軟件隔離開來,極大降低了出現安全漏洞的概率;
- 升級回滾:系統采用可回滾的雙分區模式,活動的分區通過只讀方式掛載,另外一個分區用來自動更新, 通過切換系統分區即可實現快速升級,升級出現問題時,可以快速切換回原來的分區保證系統可用;
- 集群模式:在系統安裝的時候便可自動加入內置的ETCD集群中,每個系統都可以通過本機的ETCD讀取或發布配置信息和狀態數據,通過選舉形式在服務器之中選舉Leader來同步數據,并以此確保集群之內信息始終可用;
- 單獨為容器劃分一個分區作為容器的存儲空間:所有容器的數據、元數據默認都存儲在/var/lib/docker下(當然可以修改docker容器默認的存儲路徑),很容易造成爭搶磁盤空間,導致系統崩潰,推薦在內部存儲中單獨劃分一個分區掛載到該目錄上,同樣的方法也可以使用外部存儲;
- 使用比較新且穩定的Linux內核:官方推薦Linux內核版本為3.10+,但是有些功能模塊要求的內核版本更高,如支持MacVlan網絡模塊就需要內核版本為3.9+,這個時候就得權衡一下Linux內核版本的選擇,推薦采用該功能模塊推薦的內核版本;
- 使用比較新且穩定的Docker版本:官方推薦的Docker版本為1.9.1+,但從實施和運維經驗來看,推薦選擇比較穩定的1.12.1版本;
- 只允許可信任的用戶來控制Docker Daemon:Docker Daemon控制需要root特權,推薦將可信任的用戶加入到一個組中,并將整個組授予root特權;
- 增加Docker Daemon及其相關文件、目錄的日志審計:Docker Daemon作為Docker的后臺守護進程,對其訪問控制、行為操作做日志審計是非常有必要的,一旦出現問題,很方便進行定位,推薦增加Docker文件(docker、daemon.json、docker.service、docker.sock)和目錄(/var/lib/docker、/etc/docker、/usr/bin)的日志審計;
- 使用可信任的鏡像來創建容器:Docker官方或非官方的鏡像有很多漏洞,若使用它們來運行容器,很容易被攻擊,建議使用Docker官方認證過的鏡像,或是自己構建的鏡像(建議采用Alpine作為基礎鏡像),并通過漏洞掃描工具(如Clair);也可以使用容器安全產品,類似AppSafe之類,可以全方位的保障鏡像和容器運行時的安全;
- 在容器里面盡量不要安裝不必要的軟件:不必要的軟件會占用磁盤的空間,也會增加系統的安全威脅;有些容器云公司也會提供鏡像瘦身的服務,如有容云等;
- 創建一個非root用戶的容器:容器擁有root權限,很容易讓人通過容器的root權限攻擊所在的宿主機,可以在制作鏡像的時候指定用戶,如:RUN useradd -d /home/username -m -s /bin/bash username;
- 開啟Docker的Content Trust選項:Content Trust會將數據通過數字簽名發送到遠程的Docker Registries或是從遠程的Docker Registries接收數據,用來保證鏡像在build, create, pull, push, run過程中沒有被篡改,開啟命令:export DOCKER_CONTENT_TRUST=1;
- 為容器創建一個AppArmor Profile文件:AppArmor Profile文件里面包含了各種威脅的安全策略,通過它可以保護宿主機系統和應用程序的各種威脅,設置參數如:docker run –interactive –tty –security-opt=”apparmor:PROFILENAME” centos /bin/bash。
- 開啟SELinux Security選項:SELinux提供了強制訪問控制,增強了自主訪問模型,可以通過SELinux為系統增加一層額外的安全層,設置參數如:docker run –interactive –tty –security-opt label=level:TopSecret centos /bin/bash。
- 為容器限制Linux內核的Capabilities能力:Linux把原來和超級用戶相關的高級權限劃分成為不同的單元,稱為Capability,這樣就可以獨立對特定的Capability進行開啟或禁止,來增加容器的安全,設置參數如:docker run –interactive –tty –cap-drop=all –cap-add={“NET_ADMIN”,”SYS_ADMIN”} centos:latest /bin/bash。以只讀的模式掛載容器的root文件系統,設置參數如:docker run –interactive –tty –read-only –volume /centdata centos /bin/bash
- 設置容器在失敗的時候嘗試重啟的次數:若不設置的話,重啟則會不斷的嘗試重啟,參數如:docker run –detach –restart=on-failure:5 nginx。
- 不要掛載宿主機上敏感的目錄到容器上,或是以只讀的方式掛載:如宿主機上這些目錄:/、/boot、/dev、/etc、/lib、/proc、/sys、/usr;
- 在容器里面最好不要運行ssh服務:使用docker exec 或 docker attach來查看容器實例;
- 容器運行時不要映射privileged的端口:處于安全考慮,privileged的TCP/IP端口約束在1024以下,一般的用戶是不能使用這個端口;

- 日志級別設置為info:這樣除了debug信息外,可以捕獲所有的信息,設置參數如: docker daemon –log-level=”info”;
- 允許Docker Daemon修改iptables:這樣可以自動避開錯誤的網絡配置導致的容器和外部的訪問問題,設置參數如:docker daemon –iptables=true;
- 使用安全模式訪問鏡像倉庫:Docker Daemon支持安全模式(默認)和非安全模式(–insecure-registry)訪問鏡像倉庫,推薦鏡像倉庫配置CA證書,Docker Daemon配置安全訪問模式,采用TLS安全傳輸協議;
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:Docker運維之最佳實踐