docker發展歷史

docker

  • 一、docker發展歷史
    • 很久以前
    • 2013年
    • 2014年
    • 2015年
    • 2016年
    • 2017年
    • 2018年
    • 2019年及未來
  • 二、 docker概述
    • 定義:
    • docker底層運行原理:
    • docker簡述
    • 核心概念
    • 容器特點
    • Docker與虛擬機的區別:
  • 三、容器在內核中支持兩種重要技術
  • 四、namespace的六項隔離
  • 五、虛擬化產品有哪些
    • 1.虛擬機架構:
    • 2.虛擬化產品介紹:
  • 六、docker應用場景
  • 七、安裝docker
    • 1.關閉防火墻
    • 2.安裝依賴包
    • 3.設置阿里源鏡像源
    • 4.安裝 Docker-CE并設置為開機自動啟動
    • 5.查看 docker 版本信息
    • 6.docker 信息查看

在這里插入圖片描述

一、docker發展歷史

很久以前

2008年,Solomon Hykes 和他的朋友 Kamel Founadi、Sebastien Pahl 共同創立了一家名為 DotCloud 的公司,目標是利用一種叫做容器的技術來創建他們稱作是“大規模的創新工具”:任何人都可以使用的編程工具。

2010年,dotCloud獲得了創業孵化器Y Combinator的支持,并開始吸引到一些真正的投資,在接下來的3年中,dotCloud內部孵化了一款名為Docker的產品。

2013年

2013 年 3 月 Docker 創始人 Solomon Hykes 在 PyCon 大會上的演講中首次公開介紹了 Docker 這一產品。在2013 年 PyCon 大會之后,Docker 的創新式鏡像格式以及容器運行時迅速成為社區、客戶和更廣泛行業的實際標準和基石。Docker 的強大之處在于它通過可移植的形式和易于使用的工具在應用程序和基礎設施之間創造了獨立性。其結果是,Docker將容器技術大眾化,并解決了困擾數百萬開發人員的“matrix from hell”問題,使容器技術成為主流。

2013年3月20日,dotCloud發布了 Docker 的首個版本,并將Docker源碼進行開源。https://github.com/docker/

2013年9月 紅帽公司成為Docker的主要合作伙伴,利用Docker來驅動他的OpenShift云業務。隨后,谷歌、亞馬遜以及DigitalOcean也迅速的在其云服務平臺提供了Docker的支持。主流云廠商的加入,加速Docker的發展進度。

隨著Docker技術的開源,此項技術能夠將Linux容器中的應用代碼打包并輕松的在服務器之間遷移,Docker技術瞬時的風靡了全球,2013年底DotCloud Inc則更名為Docker Inc,并全力的主攻到Docker項目開發中。

2014年

2014年6月的DockerCon大會上Docker正式發布了Docker 1.0 版本。這也意味著Docker的穩定性和可靠性已經基本滿足了生產環境的運行需求。會議上同時發布Docker Image的鏡像倉庫Docker Hub(http://hub.docker.com/),并指出已經有超過14,000個Docker化的應用存儲在他們的publc registry中。

也是同樣的2014年6月,基于谷歌內部強大的Borg系統而開發出來的kubernetes橫空處世,刷新了人們對容器的理解。

2014年8月份,Docker Inc宣布將用于PaaS業務服務的DotCloud軟件出售給德國柏林的PaaS服務廠商CloudControl,自此以后,DotCloud正式的和Docker分道揚鑣了。

2014年12月舉行的DockerConEU大會上,Docker Swarm 和Docker Machine同時面世。Docker Swarm是一個Docker集群管理工具,而Docker Machine是部署Docker主機的命令工具。

2014年12月里,CoreOS宣布開發自家的容器運行環境rkt以及appc容器規范。

2015年

容器技術不只Docker,很早之前Google就投資了CoreOS來做競爭的容器–Rocket。那時是三家鼎立:Docker/Rocket/Warden,為了避免慘烈的競爭,大家終于統一意見,決定成立固定的標準來良好發展容器技術。

2015年6月,由Docker、IBM、微軟、紅帽及Google等廠商所組成的開放容器項目OCP聯盟成立,該項目旨在建立軟件容器的通用標準。OCP成立于Linux基金會之下,其使命是使用戶和公司能夠繼續創新和開發基于容器的解決方案,并充滿信心地保護其先前的開發工作,并且不會造成行業分散。作為該計劃的一部分,Docker將捐贈其軟件容器格式,運行時以及相關規范的代碼。應用容器規范(“ appc”)計劃的領導者,包括創始成員CoreOS,也將把他們的技術領導力和支持帶到OCP。

2015 年,Docker 發布了 runC工具,runc是根據OCI標準生成的一個cli工具,一個輕量級的跨平臺的容器運行時命令行小工具,可以直接利用 libcontainer 運行容器,而無需通過 docker engine。runC 的目標是使標準容器在任何地方都可用。

2016年

2016年6月的DockerCon上,Docker宣布了Open Container Initiative的正式成立。OCI意在業界一起合作,開發一個開放的、標準的容器格式和runtime。OCI也屬于Linux基金會的協作項目,一直秉承著開放的模式來管理,其roadmap在GitHub上,大家都可以看到并參與進去:https://github.com/opencontainers/specs/blob/master/ROADMAP.md

2016年,OCI標準制定后,Docker 將 containerd 獨立拆分,并將其捐贈給了社區。將這個組件分解為一個單獨的項目,使得 docker 將容器的管理功能移出 docker 的核心引擎并移入一個單獨的守護進程(即 containerd)。

在2016年,人們認識到容器技術本身的價值時在于容器的編排,而此時的Docker項目令人驚訝的放棄了Swarm項目,而是想將容器的編排和集群的管理功能添加到Docker項目當中。而Kubernetes卻與Docker不同的是推進民主化架構,使得通過暴露Kubernetes API的方法,讓更多的人來不斷豐富kubernetes的插件。

2017年

從2013年3月開始推出0.1.0版本,到17年2月1.13的版本都采用x.x的形式。從 2017 年第一季度開始,Docker 版本號遵循 YY.MM-xx 格式。

2017 年是容器成為主流技術的一年,這就是為什么 Docker 在 Linux 之外支持眾多平臺的原因(Docker for Mac,Docker for Windows,Docker for AWS,GCP 等)。

2017 年于 Austin 舉辦的 DockerCon 上開源Docker項目正式命名為 Moby 項目。由于這次改名,GitHub 上的 docker/docker 庫也被轉移到了 moby/moby,并且擁有了項目自己的 Logo,如下圖所示。

于此同時,將Docker本身拆分為Docker-CE免費版和Docker-EE商業版。

Docker-CE目前是docker公司維護的開源項目,是一個基于Moby項目的免費的容器產品。

Docker-EE目前是docker公司維護的閉源項目,是docker公司的商業產品。

至此,容器天下三分。其中Moby由社區維護,Docker-CE由Docker公司維護,Docker-EE是Docker公司閉源的商業產品。

2018年

2018年3月 Docker 公司創始人Solomon Hykes 在 Docker 博客上(https://www.docker.com/blog/au-revoir/ 或者 https://blog.csdn.net/dt763C/article/details/79752939)宣布已正式從 Docker 公司離職,不再擔任公司的日常運作工作。Solomon Hykes 表示,他未來的身份將是 Docker 的董事會成員、主要股東,以及 Docker 維護者,但不再負責擔任公司的日常工作。

2019年及未來

2019年容器市場基本趨于穩定,一切都向著優化改進方向發展。Docker公司是底層容器引擎及運行時的。容器的編排進過幾輪的激烈競爭,基本是GOOGLE的Kubernetes一家獨大。

新的戰斗已經由容器和編排的戰場,逐漸遷移到應用領域。云原生CNCF將引領新的技術方向,微服務、ServcieMesh、Envoy、ServerLess等正在路上

二、 docker概述

定義:

是一個基于Go語言實現的開源的容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植容器中,然后發布到任何流行的linux機器或windows機器上

docker底層運行原理:

基于 客戶端(容器) 服務端 (docker引擎) 結構 的系統

客戶端 (容器) 通過socket 向 引擎發送響應的指令,docker服務器就會執行響應指令

docker簡述

vmware workstartion 個人

vmware Sphere /EXST 企業

OPenstack/KVM linux環境虛擬機 私有云環境

容器:提供在多臺主機上運行應用程序相同的運行環境

docker是開源的容器引擎 go語言開發,是容器里運行的應用的工具,是一個輕量級的虛擬機,可以利用dock在多臺主機上輕松的創建并運行容器

核心概念

鏡像:運行的容器的基礎,包括運行應用的程序的所有內容(資源、配置文件等)

容器:是從鏡像創建的運行實例

倉庫:集中保存鏡像的地方(公有docker hub,私有倉庫harbor)
在這里插入圖片描述
在這里插入圖片描述

Docker的設計宗旨:Build,Ship and Run Any,Anywhere

即通過對應用組件的封裝、發布、部署、運行等生命周期的管理,達到應用組件級別的"一次封裝,到處運行"的目的。這里的組件,既可以是一個應用,也可以是一套服務,甚至是一個完整的操作系統

容器特點

靈活:即使是最復雜的應用也可以集裝箱化

輕量級:容器利用并共享主機內核

可互換:可以即時部署更新和升級

便攜式:可以在本地構建,部署到云,并在任何地方運行

可擴展:可以增加并自動分發容器副本

可堆疊:可以垂直和即時堆疊服務

Docker與虛擬機的區別:

特性          Docker容器     虛擬機啟動速度      秒級            分鐘級計算能力      損耗幾乎無       損耗 50%左右性能          接近原生        弱于系統支持量(單機)上千個          幾十個隔離性         資源隔離/限制    完全隔離

三、容器在內核中支持兩種重要技術

docker本質就是宿主機的一個進程,
namespace                    實現資源隔離
cgroup                       實現資源限制
寫時復制技術(copy-on-write)    實現了高效的文件操作(類似虛擬機的磁盤比如分配500g并不是實際占用物理磁盤)

四、namespace的六項隔離

namespace           系統調用參數                       隔離內容UTS                 CLONE_NEWUTS                    主機名與域名IPC                 CLONE_NEWWIPC                  信號量、消息隊列和共享內存PID                 CLONE_NEWPID                    進程編號NETWORK             CLONE_NEWNET                    網絡設備、網絡線、端口等                      重點MOUNT              CLONE_NEWNS                     掛載點(文件系統)                                  重點USER                CLONE_NEWUSER                  用戶和用戶組(3.8以后的內核才支持)

五、虛擬化產品有哪些

1.虛擬機架構:

寄居架構(虛擬寄居架構:在真實的操作系統之上來去安裝虛擬化軟件,再在虛擬機上安裝虛擬化系統,穩定性不是很高,當真實機器宕機之后,虛擬系統都會宕機,個人搭建比較多)

在這里插入圖片描述
KVM數據流向

在這里插入圖片描述

原生架構(虛擬化原生架構是虛擬軟件直接安裝在硬件上,不會依賴于操作系統,這種架構一般應用在企業,因為他比較穩定)

2.虛擬化產品介紹:

vmware workstation 個人在windows安裝虛擬機

vmFUsion 個人機器安裝MAC安裝虛擬機

EXSI vmware vSphere 全虛擬化,直接使用物理硬件,性能高

在這里插入圖片描述

Xen (xen Hypervision) 安裝內核kernel-xen

KVM rehl 完全虛擬化

Microsoft Hyper-V 微軟系統(server 2012、2016、2019)自帶

docker
在這里插入圖片描述

docker與虛擬機區別
在這里插入圖片描述

六、docker應用場景

打包應用程序簡化部署

可脫離底層硬件任意遷移

七、安裝docker

1.關閉防火墻

systemctl stop firewalld.service
setenforce 0

在這里插入圖片描述

2.安裝依賴包

yum install -y yum-utils device-mapper-persistent-data lvm2 

在這里插入圖片描述

3.設置阿里源鏡像源

yum-config-manager --add-repo   https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo 

報錯:加載插件問題
在這里插入圖片描述
解決辦法

vim /etc/yum/pluginconf.d/fastestmirror.conf

在這里插入圖片描述

vim /etc/yum.conf

在這里插入圖片描述

yum install epel-release

在這里插入圖片描述

4.安裝 Docker-CE并設置為開機自動啟動

yum install -y docker-ce docker-ce-cli containerd.io
docker-ce-20.10.18systemctl start docker.service
systemctl enable docker.service

在這里插入圖片描述

5.查看 docker 版本信息

docker version

在這里插入圖片描述

6.docker 信息查看

docker info

在這里插入圖片描述
7.

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

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

相關文章

CAS 的執行流程 ?CAS 中 ABA 問題如何解決 ?CAS 在 Java 中有哪些實現類 ?

目錄 1. CAS 的執行流程 2. CAS 中的 ABA 問題 3. 如何解決 CAS 中的 ABA 問題 4.CAS 在Java 中的實現類有哪些 1. CAS 的執行流程 CAS 比較并替換的大致流程是這樣的: 它有三個操作單位:V(內存值),A(…

3D沉浸式旅游網站開發案例復盤【Three.js】

Plongez dans Lyon網站終于上線了。 我們與 Danka 團隊和 Nico Icecream 共同努力,打造了一個令我們特別自豪的流暢的沉浸式網站。 這個網站是專為 ONLYON Tourism 和會議而建,旨在展示里昂最具標志性的活動場所。觀看簡短的介紹視頻后,用戶…

Android 面試筆記整理-Binder機制

作者:浪人筆記 面試可能會問到的問題 從IPC的方式問到Binder的優勢為什么zygote跟其他服務進程的通訊不使用BinderBinder線程池和Binder機制 等等這些問題都是基于你對Binder的理解還有對其他IPC通訊的理解 IPC方式有多少種 傳統的IPC方式有Socket、共享內存、管道…

llvm-dyn_cast模板函數

dyn_cast dyn_cast是LLVM中用于執行安全的向下轉型(downcasting)的一個模板函數。在C中,向下轉型是將基類的指針或引用轉換為派生類的指針或引用。這種轉型在運行時進行,如果轉型失敗(即,如果基類的對象實…

云計算虛擬仿真實訓平臺

一、云計算虛擬仿真系統概述 云計算虛擬仿真系統是一種基于云計算技術和虛擬化技術的系統,用于實現各種仿真和模擬任務。它可以提供強大的計算能力和資源管理,為用戶提供靈活、高效、可擴展的仿真環境。 該系統通常由一組服務器、網絡和存儲設備組成&am…

uniapp開發小程序-有分類和列表時,進入頁面默認選中第一個分類

一、效果: 如下圖所示,進入該頁面后,默認選中第一個分類,以及第一個分類下的列表數據。 二、代碼實現: 關鍵代碼: 進入頁面時,默認調用分類的接口,在分類接口里做判斷&#xff…

Linux c語言字節序

文章目錄 一、簡介二、大小端判斷2.1 聯合體2.2 指針2.3 網絡字節序 一、簡介 字節序(Byte Order)指的是在存儲和表示多字節數據類型(如整數和浮點數)時,字節的排列順序。常見的字節序有大端字節序(Big En…

神經網絡基礎-神經網絡補充概念-08-邏輯回歸中的梯度下降算法

概念 邏輯回歸是一種用于分類問題的機器學習算法,而梯度下降是優化算法,用于更新模型參數以最小化損失函數。在邏輯回歸中,我們使用梯度下降算法來找到最優的模型參數,使得邏輯回歸模型能夠更好地擬合訓練數據。 邏輯回歸中的梯…

無監督學習之主成分分析-半導體制造高維數據如何降維

數據降維不只存在于半導體數據中,它是存在于各行各業的,我們要分析的數據維數較多的時候全部輸入維數較大這時就要采取降維的方法綜合出主要的幾列用于我們的分析。 PCA的哲學理念是要抓住問題的主要矛盾進行分析,是將多指標轉化為少數幾個…

前端技術棧es6+promise

let入門使用、 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>let 基本使用</title><script type"text/javascript">let name "hspedu教育";//老韓解讀//1. conso…

蘋果Mac像Windows一樣使用

一、將磁盤訪問設置的像Windows一樣&#xff1a; 1.1、點擊任務欄第一個按鈕打開“訪達”&#xff0c;點擊菜單欄上的訪達-偏好設置&#xff1a; 1.2、勾選“硬盤”&#xff0c;這樣macOS的桌面上就會顯示一個本地磁盤&#xff0c;之后重命名為磁盤根&#xff0c;相當于window…

SPF9139全力適配ios16與鴻蒙3.0,超實用數據提取、分析、恢復能力UP!

? 如今&#xff0c;群聊已成為人們必不可少的溝通窗口 家人群&#xff0c;好友群&#xff0c;班級群 粉絲群&#xff0c;交友群&#xff0c;工作群 …… 各類群聊鋪天蓋地般涌來的同時 也有一些群聊淪為了 賭博、傳播淫穢視頻、發表不當言論 等違法犯罪行為滋生之地 與…

mac 可以進行單片機(stm32)的開發嗎?

當涉及到在Mac上進行單片機開發時&#xff0c;是完全可行的。以下是為什么Mac適合單片機開發的解釋&#xff1a;開發工具&#xff1a;針對STM32單片機&#xff0c;你可以使用多種開發工具。一個常用的選擇是Segger Embedded Studio&#xff0c;它是一個功能強大的集成開發環境&…

ClickHouse(十八):Clickhouse Integration系列表引擎

進入正文前&#xff0c;感謝寶子們訂閱專題、點贊、評論、收藏&#xff01;關注IT貧道&#xff0c;獲取高質量博客內容&#xff01; &#x1f3e1;個人主頁&#xff1a;含各種IT體系技術&#xff0c;IT貧道_Apache Doris,大數據OLAP體系技術棧,Kerberos安全認證-CSDN博客 &…

IDEA常用設置與maven項目部署

目錄 前言 一、Idea是什么 二、Idea的優點 三、Idea的常用設置 主題設置 設置鼠標懸浮提示 忽略大小寫提示 自動導包 取消單行顯示Tabs 設置字體 配置類文檔注釋信息模版 設置文件編碼 設置自動編譯 水平或者垂直顯示代碼 快捷方式改成eclipse 設置默認瀏覽器…

Java并發編程(六)線程池[Executor體系]

概述 在處理大量任務時,重復利用線程可以提高程序執行效率,因此線程池應運而生。 它是一種重用線程的機制,可以有效降低內存資源消耗提高響應速度。當任務到達時&#xff0c;任務可以不需要的等到線程創建就能立即執行線程池可以幫助我們更好地管理線程的生命周期和資源使用,…

Jmeter - 函數助手

目錄 __StringFromFile __CSVRead __counter __RandomString __StringFromFile StringFromFile函數用于獲取文本文件的值&#xff0c;一次讀取一行 1、輸入文件的全路徑&#xff1a;填入文件路徑 2、存儲結果的變量名&#xff08;可選&#xff09; 3、Start file sequence …

Tomcat+Http+Servlet

文章目錄 1.HTTP1.1 請求和響應HTTP請求&#xff1a;請求行請求頭請求體HTTP響應&#xff1a;響應行&#xff08;狀態行&#xff09;響應頭響應體 2. Apache Tomcat2.1 基本使用2.2 IDEA中創建 Maven Web項目2.3 IDEA中使用Tomcat 3. Servlet3.1 Servlet快速入門3.2 Servlet執行…