【Docker】Docker使用之容器技術發展史

🎬 博客主頁:博主鏈接
🎥 本文由 M malloc 原創,首發于 CSDN🙉
🎄 學習專欄推薦:LeetCode刷題集
🏅 歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
📆 未來很長,值得我們全力奔赴更美好的生活?

在這里插入圖片描述
在這里插入圖片描述

文章目錄

  • 😇本章詳情
  • 😇Jail時代
    • 😇1979 年 貝爾實驗室發明 chroot
    • 😇2000 年 FreeBSD 4.0 發行 FreeBSD Jail
    • 😇2001 年 Linux VServer 發行
    • 😇2004 年 Solaris Containers 發行
  • 😇云時代
    • 😇2006 年 google 推出 Process Containers
    • 😇2008 年 LXC 推出
    • 😇2011 年 CloudFoundry 推出 Warden
    • 😇2013 年 LMCTFY 啟動
    • 😇2013 年 Docker 推出到風靡全球
  • 😇云原生時代
    • 😇Google &Docker 競爭
    • 😇2013 年 CoreOS 發布和 Docker 由合作終止
    • 😇2014 年 6 月 Google 發布開源的容器編排引擎 Kubernetes(K8S)
  • 🤣本文小結

😇本章詳情

🐤本篇文章將講述Docker容器的技術發展史

😇Jail時代

😁容器不是一個新概念或者新技術,很早就有了,只是近幾年遇到了云計算,整個技術被徹底引爆了。

😇1979 年 貝爾實驗室發明 chroot

📑chroot 系統調用是在 1979 年開發第 7 版 Unix 期間引入的。貝爾實驗室在 Unix V7 的開發過程中,發現當一個系統軟件編譯和安裝完成后,整個測試環境的變量就會發生改變,下一次測試需要重新配置環境信息。

設計者們思考能否隔離出來一個獨立的環境,來構建和搭建測試環境,所以發明了
chroot,可以把一個進程的文件系統隔離起來

chroot 系統調用可以將進程及其子進程的根目錄更改為文件系統中的新位置。隔離以
后,該進程無法訪問到外面的文件,因此這個被隔離出來的新環境像監獄一樣,被命
名為 Chroot Jail (監獄)。后續測試只需要把測試信息放到 Jail 中就可以完成測試了。

這一進步是進程隔離的開始:為每個進程隔離文件訪問。所以 chroot 可以認為是容器
技術的鼻祖。

😇2000 年 FreeBSD 4.0 發行 FreeBSD Jail

前言

2000 年,當時一家小型共享環境托管提供商提出了 FreeBSD Jail,以實現其服務與其客戶服務之間的明確分離,以實現安全性和易于管理。每個 Jail 都是一個在主機上運行的虛擬環境,有自己的文件、進程、用戶和超級用戶帳戶,能夠為每個系統分配一個IP 地址。

FreeBSD Jail 不僅僅有 chroot 的文件系統隔離,并且擴充了獨立的進程和網絡空間

😇2001 年 Linux VServer 發行

💐與 FreeBSD Jails 一樣,Linux VServer 是一種監獄機制,可以對計算機系統上的資源
(文件系統、網絡地址、內存)進行分區。

😇2004 年 Solaris Containers 發行

2004 年, Solaris Containers 的第一個公開測試版發布,結合系統資源控制和區域進
行隔離,并添加了快照和克隆能力。

這個時期的進程隔離技術大多以 Jail 模式為核心,基本實現了進程相關資源的隔離操作,沒有更大的應用場景發展有限。

😇云時代

2006 年,Google 101 計劃提出云的概念,對當前的主流開發模式產生深遠的影響。也許以后我們會更多考慮如果出現比現在多 1000 倍, 10000 倍的數據量的時候,我們該如何處理?要想讓”云”發揮潛能,與此相關的編程和操作就應該與使用互聯網一樣簡單。隨后,亞馬遜、IBM 等行業巨頭也陸續宣布各自的“云”計劃,宣告“云”技術時代的來臨。

云計算需要處理海量數據、超高并發、快速擴展等問題,此時不僅僅需要隔離還需要能夠對資源進行控制和調配。

😇2006 年 google 推出 Process Containers

提示

Process Containers(由 Google 于 2006 年推出)旨在限制、統計和隔離一組進程的資源使用(CPU、內存、磁盤 I/O、網絡)。一年后它更名為“Control Groups (cgroups)”,并最終合并到 Linux 內核 2.6.24

😇2008 年 LXC 推出

LXC(Linux 容器)是 Linux 容器管理器的第一個、最完整的實現。它是在 2008 年使
cgroupsLinux 命名空間實現的,它可以在單個 Linux 內核上運行,不需要任何
補丁。

同年谷歌推出 GAE(Google App Engine),首次把開發平臺當做一種服務來提供,采
用云計算技術,跨越多個服務器和數據中心來虛擬化應用程序。

同時 Google 在 GAE 中使用了 Borg (Kubernetes 的前身)來對容器進行編排和調度。
LXC 和 Borg 其實就相當于最早的 docker 和 k8s.

😇2011 年 CloudFoundry 推出 Warden

?2011 年啟動了 Warden,早期使用 LXC,后來替換為自己的實現,直接對 Cgroups 以及 Linux Namespace 操作。開發了一個客戶端-服務器模型來管理跨多個主機的容器
集合,并且可以管理 cgroups、命名空間和進程生命周期。

😇2013 年 LMCTFY 啟動

概要

🌕Let Me Contain That For You (LMCTFY) 于 2013 年作為 Google 容器堆棧的開源版本啟動,提供 Linux 應用程序容器。應用程序可以“容器感知”,創建和管理它們自己的子容器。在谷歌開始和 docker 合作,后續轉向了 docker 公司的 libcontainer,LMCTFY 的于 2015 年停止。

😇2013 年 Docker 推出到風靡全球

Docker 最初是一個叫做 dotCloud 的 PaaS 服務公司的內部項目,后來該公司改名為Docker。Docker 在初期與 Warden 類似,使用的也是 LXC,之后才開始采用自己開發的 libcontainer 來替代 LXC,它是將應用程序及其依賴打包到幾乎可以在任何服務器上運行的容器的工具。與其他只做容器的項目不同的是,Docker 引入了一整套管理容器的生態系統,這包括高效、分層的容器鏡像模型、全局和本地的容器注冊庫、清晰的 REST API、命令行等等。

Docker 最初是一個叫做 dotCloud 的 PaaS 服務公司的內部項目,后來該公司改名為 Docker。Docker 在初期與 Warden 類似,使用的也是 LXC,之后才開始采用自己開發 的 libcontainer 來替代 LXC,它是將應用程序及其依賴打包到幾乎可以在任何服務器 上運行的容器的工具。與其他只做容器的項目不同的是,Docker 引入了一整套管理容 器的生態系統,這包括高效、分層的容器鏡像模型、全局和本地的容器注冊庫、清晰 的 REST API、命令行等等。

😇云原生時代

😇Google &Docker 競爭

😇2013 年 CoreOS 發布和 Docker 由合作終止

🌞技術革命帶來新的市場機遇,CoreOS 也是其中的一員,在容器生態圈中貼有標簽:專為容器設計的操作系統 CoreOS。作為互CoreOS+Docker 曾經也是容器部署的靈魂伴侶。CoreOS 為 Docker 的推廣和源碼社區都做出了巨大的貢獻。

Docker 生態擴張,與最開始是“一個簡單的基礎單元”不同,Docker 也在通過開發或收購逐步完善容器云平臺的各種組件,準備打造自己的生態圈,而這與 CoreOS 的布局有直接競爭關系。

😇2014 年 6 月 Google 發布開源的容器編排引擎 Kubernetes(K8S)

容器只是解決了容器化,分發問題,但是一個軟件的網絡問題、負載均衡問題、監控、部署、更新、鏡像管理、發布等很多問題并沒有有效的解決。

Google 內部調度系統 Borg 已經擁有 10 多年的使用容器經驗,在 2014 年 6 月推出了
開源的 K8S,可以支持對容器的編排和管理,完成生態的閉環。

同年 7 月,微軟、Red Hat、IBM、Docker、CoreOS、 Mesosphere 和 Saltstack 等公司,相繼加入 K8S。之后的一年內,VMware、HP、Intel 等公司,也陸續加入。

🤣本文小結

好啦今日的分享到這里就結束啦,我是愛你們的M malloc希望可以幫助到你們噢,最后別忘記三連啦!!

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39396.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Unity】UI的一些簡單知識

Canvas 新建一個Canvas Render Mode Canvas 中有一個Render Mode(渲染模式),有三種渲染模式: Screen Space-Overlay (屏幕空間)Screen Space-Camara 、 World Space 其中,Space- Overlay是默認顯示在…

使用Spring Boot和Redis實現用戶IP接口限流的詳細指南

系列文章目錄 文章目錄 系列文章目錄前言一、準備工作二、編寫限流過濾器三、配置Redis四、測試接口限流總結 前言 在高并發場景下,為了保護系統免受惡意請求的影響,接口限流是一項重要的安全措施。本文將介紹如何使用Spring Boot和Redis來實現用戶IP的…

數據統計與可視化的Dash應用程序

在數據分析和可視化領域,Dash是一個強大的工具,它結合了Python中的數據處理庫(如pandas)和交互式可視化庫(如Plotly)以及Web應用程序開發框架。本文將介紹如何使用Dash創建一個簡單的數據統計和可視化應用程…

移動端網頁中的前端視頻技術探索

引言 隨著移動設備的普及和網絡速度的提升,移動端網頁中的視頻播放已經成為了越來越重要的功能需求。本篇博客將介紹一些在移動端網頁中實現前端視頻播放的技術探索,并提供詳細的代碼示例。 1. 基本視頻標簽 在移動端網頁中實現視頻播放最基本的方法就…

【C++學習手札】一文帶你初識運算符重載

食用指南:本文在有C基礎的情況下食用更佳 🍀本文前置知識: C類 ??今日夜電波:クリームソーダとシャンデリア—Edo_Ame江戶糖 1:20 ━━━━━━?💟──────── 3:40 …

ID3 決策樹

西瓜數據集D如下: 編號色澤根蒂敲聲紋理臍部觸感好瓜1青綠蜷縮濁響清晰凹陷硬滑是2烏黑蜷縮沉悶清晰凹陷硬滑是3烏黑蜷縮濁響清晰凹陷硬滑是4青綠蜷縮沉悶清晰凹陷硬滑是5淺白蜷縮濁響清晰凹陷硬滑是6青綠稍蜷濁響清晰稍凹軟粘是7烏黑稍蜷濁響稍糊稍凹軟粘是8烏黑稍蜷濁響清晰…

idea cannot download sources 解決方法

問題 點擊class文件右上角下載源碼失敗 解決方案 找到idea terminal 控制臺cd 至maven工程執行 mvn dependency:resolve -Dclassifiersources

【IMX6ULL驅動開發學習】04.應用程序和驅動程序數據傳輸和交互的4種方式:非阻塞、阻塞、POLL、異步通知

一、數據傳輸 1.1 APP和驅動 APP和驅動之間的數據訪問是不能通過直接訪問對方的內存地址來操作的,這里涉及Linux系統中的MMU(內存管理單元)。在驅動程序中通過這兩個函數來獲得APP和傳給APP數據: copy_to_usercopy_from_user …

24屆近3年上海電力大學自動化考研院校分析

今天給大家帶來的是上海電力大學控制考研分析 滿滿干貨~還不快快點贊收藏 一、上海電力大學 學校簡介 上海電力大學(Shanghai University of Electric Power),位于上海市,是中央與上海市共建、以上海市管理為主的全日…

stack 、 queue的語法使用及底層實現以及deque的介紹【C++】

文章目錄 stack的使用queue的使用適配器queue的模擬實現stack的模擬實現deque stack的使用 stack是一種容器適配器&#xff0c;具有后進先出&#xff0c;只能從容器的一端進行元素的插入與提取操作 #include <iostream> #include <vector> #include <stack&g…

Layui列表復選框根據條件禁用

// 禁用客服回訪id有值的復選框res.data.forEach(function (item, i) {if (item.feedbackEmpId) {let index res.data[i][LAY_TABLE_INDEX];$(".layui-table tr[data-index"index"] input[typecheckbox]").prop(disabled,true);$(".layui-table tr[d…

【WebRTC---源碼篇】(二十四)GCC獲取碼率后的分配

RtpTransportControllerSend::PostUpdates 配置碼率 // Contains updates of network controller comand state. Using optionals to // indicate whether a member has been updated. The array of probe clusters // should be used to send out probes if not empty. // 包…

【SpringBoot】89、SpringBoot中使用@Transactional進行事務管理

事務是一組組合成邏輯工作單元的操作,雖然系統中可能會出錯,但事務將控制和維護事務中每個操作的一致性和完整性。 1、SpringBoot 引用說明 新建的 Spring Boot 項目中,一般都會引用 spring-boot-starter 或者 spring-boot-starter-web,而這兩個起步依賴中都已經包含了對…

EV 錄屏修復小工具

參考這篇文章, EV錄制文件損壞-修復方法, 我用 C# 寫了一個小程序. 倉庫: github.com/SlimeNull/EvRepair 下載: github.com/SlimeNull/EvRepair/Releases 鏡像: gitee.com/slimenull/EvRepair/releases 覺得還不錯的話, 點個星星 推薦使用的幾個理由: 內嵌 ffmpeg 和 recov…

Linux學習之初識Linux

目錄 一.Linux的發展歷史及概念 1.什么是Linux UNIX發展的歷史&#xff1a; Linux發展歷史&#xff1a; 2. 開源 商業化發行版本 二. 如何搭建Linux環境 Linux 環境的搭建方式主要有三種&#xff1a; 1. 直接安裝在物理機上 2. 使用虛擬機軟件 3. 使用云服務器 三. …

沒學C++,如何從C語言絲滑過度到python【python基礎萬字詳解】

大家好&#xff0c;我是紀寧。 文章將從C語言出發&#xff0c;深入介紹python的基礎知識&#xff0c;也包括很多python的新增知識點詳解。 文章目錄 1.python的輸入輸出&#xff0c;重新認識 hello world&#xff0c;重回那個激情燃燒的歲月1.1 輸出函數print的規則1.2 輸入函…

idea 使用debug 啟動項目的時候 出現 Method breakpoints may dramatically slow down debugging

問題: 1. 寫了一段時間的代碼&#xff0c;在debug啟動項目后提示&#xff1a;Method breakpoints may dramatically slow down debugging 但是正常啟動是可以的&#xff0c;debug不行。 2. idea 里面的項目&#xff0c;很多地方都有斷點&#xff0c;現在想要取消全部的斷點…

Redis——hash類型詳解

概述 Redis本身就是鍵值對結構&#xff0c;而Redis中的value可以是哈希類型&#xff0c;為了區分這兩個鍵值對&#xff0c;Redis中的鍵值對是key-value&#xff0c;而value中的哈希鍵值對則是field-value&#xff0c;其中value必須是字符串 下面介紹一些Redis的hash類型的常用…

Vue中拖動排序功能,引入SortableJs,前端拖動排序。

背景&#xff1a; 作為一名前端開發人員&#xff0c;在工作中難免會遇到拖拽功能&#xff0c;分享一個github上一個不錯的拖拽js庫&#xff0c;能滿足我們在項目開發中的需要&#xff0c;支持Vue和React&#xff0c;下面是我在vue后臺項目中中使用SortableJS的使用詳細流程&am…

html實現iphone同款開關

一、背景 想實現一個開關的按鈕&#xff0c;來觸發一些操作&#xff0c;網上找了總感覺看著別扭&#xff0c;忽然想到iphone的開關挺好&#xff0c;搞一個 二、代碼實現 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&qu…