是什么
Docker是基于Go語言實作的云開源專案, Docker的主要目標是“Build, Ship and Run Any App, Anywhere",也就是通過對應用組件的封裝、分發、部署、運行等生命期的管理,使用戶的APP (可以是一個WEB應用或資料庫應用等等)及其運行環境能夠做到“一次封裝,到處運行”,
解決了運行環境和配置問題的軟體容器,方便做持續集成并有助于整體發布的容器虛擬化技術,
能干嘛
之前的虛擬機技術:
虛擬機(virtual machine)就是帶環境安裝的一種解決方案,它可以在一種作業系統里面運行另一種作系統,比如在Windows系統里面運行Linux系統,
虛擬機的缺點: 1、資源占用多 2、冗余步驟多 3、啟動慢
容器虛擬化技術:
由于前面虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術: Linux 容器(Linux Containers,縮為LXC),Linux容器不是模擬一個完整的作業系統,而是對行程進行隔離,
有了容器,就可以將軟體運行所的所有資源打包到一個隔離的容器中,容器與虛擬機不同,不需要捆綁一整套作業系統,只需要軟體作業所需的庫資源和設定,系統因此而變得高效輕量并保證部署在任何環境中的軟體都能始終如一地運行,
虛擬機:
Linux容器:
比較了Docker和傳統虛擬化方式的不同之處:
1、傳統虛擬機技術是虛擬出一套硬體后,在其上運行一個完整作業系統,在該系統上再運行所需應用行程;
2、而容器內的應用行程直接運行于宿主的內核,容器內沒有自己的內核,而且也沒有進行硬體虛擬,因此容器要比傳統虛擬機為輕便,
3、每個容器之間互相隔離,每個容器有自己的檔案系統,容器之間行程不會相互影響,能區分計算資源,
開發/運維(DevOps)
一次構建、隨處運行,
- 更快速的應用交付和部署
- 更便捷的升級和擴縮容
- 更簡單的系統運維
- 更高效的計算資源利用
Docker 的基本組成
Docker架構圖

Docker三要素:
鏡像( image )
Docker 鏡像是用于創建 Docker 容器的模板,鏡像可以用來創建Docker容器,一個鏡像可以創建很多容器,
容器( container)
容器是鏡像運行時的物體,容器可以被創建、啟動、停止、洗掉、暫停等,每個容器都是相互隔離的、保證安全的平臺,
可以把容器看做是一個簡易版的Linux環境(包括root用戶權限、行程空間、用戶空間和網路空間等)和運行在其中的應用程式, 容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角, 唯一區別在于容器的最上面那一層是可讀可寫的,

倉庫( repository)
倉庫可看成一個代碼控制中心,用來保存鏡像,類似于GitHub在,這個是DockerHub
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用,
一個 Docker Registry 中可以包含多個倉庫(Repository,可以理解為一種軟體的鏡像倉庫,比如:nginx,mysql);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像,
通常,一個倉庫會包含同一個軟體不同版本的鏡像,而標簽就常用于對應該軟體的各個版本,我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟體哪個版本的鏡像,如果不給出標簽,將以 latest 作為默認標簽,
Docker安裝
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Docker是怎樣作業的
Docker是一個Client-Server結構的系統,Docker守護行程運行在主機上,然后通過Socket連接從客戶端訪問,守護行程從客戶端接受命令并管理運行在主機上的容器,容器,是一個運行時環境,就是我們所說的集裝箱,

為什么Docker比較比vm快?
1、docker有著比虛擬機更少的抽象層,由于docker不需要Hypervisor實作硬體資源虛擬化,運行在docker容器上的程式直接使用的都是實際物理機的硬體資源,因此在CPU、記憶體利用率上docker將會在效率上有明顯優勢,
2、docker利用的是宿主機的內核,而不需要Guest OS,因此,當新建一個 容器時,docker不需要和虛擬機一樣重新加載一個作業系統內核仍而避免引尋、加載作業系統內核返個比較費時費資源的程序,當新建一個虛擬機時,虛擬機軟體需要加載GuestOS,返個新建程序是分鐘級別的,而docker由于直接利用宿主機的作業系統,則省略了返個程序,因此新建一個docker容器只需要幾秒鐘,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/191117.html
標籤:Java
上一篇:【Flutter 面試】main入口函式會被呼叫幾次
下一篇:手寫Javaweb服務器
