<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    分享 | 容器技術和Docker介紹

    VSole2022-01-21 13:27:29

    1月20日,深信服大云售前專家YJ在信服云《云集技術學社》系列直播課上進行了《容器技術和Docker介紹》的分享,詳細介紹了容器技術的發展、以Docker為代表的容器技術生態以及容器技術的應用場景。

    看點一、容器和Docker發展歷史

    容器技術發展是從上世紀70年代開始,在算力飛速發展的背景下,科學家圍繞著如何提高資源利用率進行研究,因此產生了最早的資源隔離技術,如chroot。資源隔離技術持續發展到21世紀初期,Namespace、Cgroup等資源隔離技術加入Linux內核,形成了內核標準的LXC容器技術。

    2010年前后,云計算逐步發展,共享經濟和互聯網的趨勢越來越明顯,要求企業對客戶的需求能夠精準把控和快速滿足,因此出現了敏捷迭代。在敏捷迭代的場景下,如果每次都需要工程師重復地去規劃底層資源的隔離,配額,環境配置等,整體流程就無法實現敏捷。

    基于這些背景,一個叫做Solomon Hykes的工程師提出了現代化容器的解決方案,他把這些技術整合到一個開箱即用的軟件中,并且加入了諸多如用戶友好的管理界面、規模化管理、存儲格式等功能,這些能力如今都成為了容器的標準能力。

    2014到2017年,Google等頭部廠商先后開源圍繞容器生態的解決方案,并試圖掌握技術主導權,由此分化出CNCF和OCI等不同的技術組織和標準。

    2018年后,CNCF主導的容器生態獲得巨大成功,驅動了容器技術為基礎的新一代PaaS的發展,孵化出了如應用開發運維能力(DevOps),應用架構(微服務),無服務器架構等領域的新方案。

    以上就是容器技術大概的發展歷史。提起容器技術大家會聯想到Docker,其實容器技術并不特指Docker,但Docker在整個容器技術領域有著非常重要的作用,主要表現在三個方面

    一是Docker是容器技術的開創者,Docker在LXC的基礎上降低了容器技術使用的復雜度,提出了大規模使用的管理運維方案。開創性提出了鏡像文件實現了應用和運行環境的“一次封裝到處運行”,進而又推動技術的普及度。

    二是Docker是容器技術的推廣者,DockerHub鏡像倉庫構建了基于鏡像的開發者社區和生態,讓全球開發者都參與到生態建設和分享中來,為容器技術的普及做出了極大貢獻,Docker也憑此獲得高速發展和領導者地位。

    三是Docker是標準的推動者,Docker貢獻和領導了容器鏡像和運行時的OCI標準制定,加速了容器技術的發展。同時還貢獻了containerd,參與了CRI標準制定,推動了容器生態和組織的發展,最終達到工業級應用。

    盡管近些年Docker在容器技術主導權的地位爭奪中發展不太樂觀,但Docker經過十年經營,在市場認知度、學習資源的完善度、客戶應用的成熟度等方面仍具有巨大優勢,是了解容器發展歷史和技術的首推學習對象。

    看點二、Docker為代表的容器技術介紹

    當談論Docker的時候,并不是談論單獨的產品,而是Docker公司針對容器技術、管理和生態的一整套解決方案

    Docker由RunC、Containerd、Docker Engine、Docker Compose、Docker Swarm等部分組成: 

    RunC(low-level)是一個輕量級的工具,用來運行容器,也是標準化的產物,是在圍繞容器格式和對運行時制定的一個開放的工業化標準。

    Containerd(high-level)是容器虛擬化技術,從Docker中剝離出來,形成開放容器接口(OCI)標準的一部分,起到承上啟下的作用,對上接受命令參數的內容,對下調用RunC實際的操作容器服務。

    Docker Engine是執行Docker標準的后臺應用程序(Dockerd),用來構建鏡像,運行容器,管理網絡和存儲等。它的API不遵循CRI標準。任何第三方平臺與其集成必須開發對接其接口(Docker-shim)。

    Docker Compose是基于YAML規范使用腳本來定義和簡化多容器部署的工具。Docker Swarm是Docker集群管理平臺。

    Docker的核心概念是鏡像,鏡像含有啟動Docker容器所需的文件系統結構及內容。可以說,鏡像是Docker設計精巧的、引爆容器技術的核彈。

    鏡像有五個特性:一是封裝,Docker鏡像將應用及其類庫,配置、環境等依賴全部打包緊耦合到一個文件實現應用遷移,讓應用到任意環境都可開箱并立即正常運行。

    二是分層,Docker鏡像由基礎層(base image)和應用層構成,而應用層可以根據對底層的依賴程度,抽象出不同的基礎層。

    三是共享,基于分層文件系統,不同的層可以被共享和依賴,使得鏡像通過標準API操作進行復制時,只需要獲取數據不同的層即可,不需要所有依賴都被復制(底層依賴已經存在情況下,會通過層的UUID進行校驗)。

    四是輕量,多個容器通過同一個鏡像創建時,不需要對鏡像進行復制(對比虛擬機),只需要將鏡像層掛載為只讀,然后再加上一個可讀寫層即可。

    五是寫時復制,只有在可讀寫層的數據變化且需要保存寫入新的層的時候,Docker鏡像才會生成新的鏡像層。寫時復制與分層機制可以大大減少磁盤空間的占用和容器啟動時間。

    Docker基于鏡像去創建容器的具體步驟是:首先將BaseImage內容作為容器的rootfs以只讀方式掛載。然后Docker Daemon繼續解析鏡像的其它層,如ADD,ENV等信息,對容器的運行時環境進行初始化。初始化后Docker Daemon繼續解析鏡像文件,執行CMD信息中的命令并執行,使得容器進入運行態。

    Docker在計算時會用到Namespace和Cgroup技術,Docker會基于Namespace技術進行包括網絡、文件系統和環境等在內的資源隔離。Linux Cgroup就是Linux內核中用來為進程設置資源限制的一個重要功能,全稱是Linux Control Group,主要作用是限制一個進程能夠使用的資源上限,包括CPU、內存、磁盤、網絡帶寬等等。 

    鏡像倉庫是用來存儲和分發容器鏡像的應用。企業和個人對產出的鏡像文件可以集中管理,便于進行權限控制、安全控制、能力共享、生態建設等。鏡像倉庫可以對基于容器鏡像的應用進行統一的版本,分發管理等。鏡像倉庫可以簡化和優化企業基于容器的開發測試管理和集成,運維流程等(如CICD)。

    看點三、容器其他重要概念與應用場景

    除了容器技術生態外,容器還有著其他的重要概念。Docker和虛擬機都是資源隔離的方案。Docker是基于OS的資源隔離技術,Docker Engine占用資源很少,物理機資源基本上被容器應用和物理機操作系統使用。虛擬機多了一層Guest OS(虛擬機操作系統),若一臺物理機上跑10臺虛擬機,則有10個Guest OS的資源損耗,Hypervisor層虛擬化,降低了虛擬機性能。

    容器安全也是現在一個比較重要的領域,目前容器安全主要注重四個方面,一是鏡像安全,如果使用了不安全的外部鏡像依賴,鏡像中有系統漏洞、缺陷,或者被惡意植入病毒和后門等,都會對容器造成較大威脅。二是容器逃逸,由于容器是基于OS共享的架構,如果攻擊者利用容器漏洞,獲取OS root權限,文件系統權限等,都會對整個系統造成極大危害。三是配置安全,即對容器引擎,鏡像倉庫,Kubernetes等沒有進行正確的權限配置等造成的入侵。四是漏洞管理,針對鏡像中的類庫文件漏洞,如apache log4j2漏洞,需要對鏡像文件進行及時識別和更新。

    容器技術在深入到企業級應用時,還要有巨大的知識需要掌握,比如管理調度、大規模網絡的網絡性能、容器日志運行監控等,這些都需要對相應的解決方案進行深入學習。另外,由于容器技術的特性和生態發展,云服務廠商也在普遍使用容器技術構建企業級PaaS平臺。

    容器的應用場景主要有六個:一是快速開發,由于公有鏡像倉庫有著龐大的開源社區和開放的鏡像資源,可以讓開發者實現開箱即用。二是多云應用,因為容器與IaaS解耦以及容器本身輕量的特性讓容器更便于去做多云的遷移。三是應用隔離,在同一個服務器里需要運行多個應用時,可以使用容器去做運行環境和依賴的隔離。四是微服務架構,容器與微服務架構輕量、敏捷彈性的特性適配。五是能力沉淀,利用容器技術可以將前期架構的運行環境封裝起來,方便后來的技術人員開箱即用,這也是對企業能力的沉淀。六是持續集成和部署,容器可以保障開發測試環境的一致性,實現快速迭代和部署。

    以上就是本次直播的主要內容。對云計算感興趣的IT朋友可以點擊下方鏈接回顧往期,了解更多云計算知識。

    docker容器技術
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    主要介紹了容器技術的發展、以Docker為代表的容器技術生態以及容器技術的應用場景。
    容器安全是一個龐大且牽涉極廣的話題,而容器的安全隔離往往是一套縱深防御的體系,牽扯到AppArmor、Namespace、Capabilities、Cgroup、Seccomp等多項內核技術和特性,但安全卻是一處薄弱則全盤皆輸的局面,一個新的內核特性可能就會讓看似無懈可擊的防線存在突破口。隨著云原生技術的快速發展,越來越多的容器運行時組件在新版本中會默認配置AppArmor策略,原本我們在《紅藍對
    在完成了這項針對 Linux 中多個受控制用戶空間的基礎性工作后,Linux 容器開始逐漸成形并最終發展成了現在的模樣。開源 Docker 社區致力于改進這類技術,并免費提供給所有用戶,使之獲益。除了運行容器之外,Docker 技術還具備其他多項功能,包括簡化用于構建容器、傳輸鏡像以及控制鏡像版本的流程。與此相反,Docker 技術鼓勵應用程序各自獨立運行其進程,并提供相應工具以實現這一功能。
    目前發現并沒有將kubernetes和Docker技術產生背景和需求進行比較的文章,本文從最純正的官方定義角度出發并展開,闡述二者產生背景及與傳統技術對比。官方定義2:k8s是一個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
    云原生安全工具合集
    2023-04-11 10:06:28
    以Docker+K8s為代表的容器技術得到了越來越廣泛的應用,從安全攻防的角度,攻擊者已經不再滿足于容器逃逸,進而攻擊整個容器編排平臺,如果可以拿下集群管理員權限,其效果不亞于域控失陷。在云原生安全攻防的場景下,甲乙攻防雙方對于安全工具的關注點也不一樣。
    在工業開發領域也有人提出了一種被稱為 MLops 的新的開發范式,即機器學習時代的 Devops。Reproducible Machine Learning,顧名思義,即為可復現的機器學習。
    一、前言 這篇文章可能出現一些圖文截圖顏色或者命令端口不一樣的情況,原因是因為這篇文章是我重復嘗試過好多次才寫的,所以比如正常應該是訪問6443,但是截圖中是顯示大端口比如60123這種,不影響閱讀和文章邏輯,無需理會即可,另外k8s基礎那一欄。。。本來想寫一下k8s的鑒權,后來想了想,太長了,不便于我查筆記,還不如分開寫,所以K8S基礎那里屬于湊數???寫了懶得刪(雖然是粘貼的:))
    Docker容器入門指北
    2022-05-11 06:43:31
    Docker 是一種基于 Linux 的容器技術,類似于輕量的虛擬機。它采用 C/S 架構,使用Go語言開發。Docker 分為 2 個版本:社區版和企業版,社區版免費,企業版是收費的
    聲明 本文為筆者對實際容器安全事件的歸納,僅代表個人觀點。 文末為容器安全事件排查與響應思維導圖。 引子 定位初始入侵位置 首先要確認入侵是否發生在容器內,或者說只在容器內。 場景:zabbix告警一個進程占用非常高,像是挖礦程序/DOS了。 但是查看進程的PPID卻發現是systemd,這種情況大概率是容器相關了。 首先獲取程序PID,然后查看對應進程的進程樹是否父進程為contai
    軟件定義安全毫無疑問是未來數據中心安全建設發展方向,在等保合規建設中發揮重要作用,需要安全廠商對等級保護標準深入理解和云計算安全領域的持續積累創新,需要網絡安全行業進一步推進開放的生態圈建設,不斷開發出適合各種場景的完備的解決方案,應對持續加大的合規、實戰和投入的三重壓力。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类