一:什麼是Docker
Docker最初是dotCloud公司創始人Solomon Hykes在法國發起的一個公司內部項目,它基於dotCloud公司多年雲服務技術的一次革新,用Go語言實現,並於2013年3月以Apache協議開源,主要的項目代碼在GitHub上進行維護,源碼地址:https://github.com/Docker/Docker
主要的功能是:支持應用部署
二:爲什麼要使用Docker
①是其更高效的利用系統的資源,不需要進行硬件虛擬以及運行完整的操作系統等額爲開銷,Docker對系統資源利用率更高,
②更加快速的啓動時間,由於直接運行於宿主內核,無需啓動完整的操作系統,因此可以做到秒級的啓動時間。
③一致的運行環境,不會出現"這段代碼在我機器上沒問題的"問題。
④持續交付和部署。開發人員可以通過Dockerfile來進行鏡像構建,並結合持續集成系統繼續寧測試
三:容器
Docker 是容器,可以理解爲輕量級的虛擬機,但是這裏需要明確的一個概念是,容器比虛擬機過更加輕量級,一個操作系統上,應該可以部署上千個Docker容器,這是虛擬機無法比擬的,Docker和虛擬機對比如下:
特性 | 容器 | 虛擬機 |
啓動 | 秒級 | 分鐘級 |
硬盤使用 | 一般爲MB |
一般爲GB |
性能 | 接近原生 | 弱於 |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
四:三大核心概念
① 鏡像:
Docker鏡像是一個特殊的文件系統。鏡像構建時,會一層層構建,錢一層是後一層的基礎。沒一層構建完成後就不會再發生改變,後一層上的任何改變只會發生在自己這一層
② 容器
鏡像和容器的關係,就像是面向程序設計中的類和實例一樣,容器是鏡像的一個實例。
③ 倉庫
存儲、分發鏡像的服務器;一個服務器可以有多個倉庫。最長使用的Registry 公開服務是官方的Docker Hub。 分發鏡像的服務器=數據庫服務器 倉庫= 數據庫