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.