Docker學習第一天
1、容器和虛擬機的區別
虛擬機:是通過硬體模擬,運行一個虛擬機給它預留的資源全部被占完,每個虛擬機都是獨立運行,可以使用不同的作業系統。
docker容器:
容器技術是和我們的宿主機共享硬體資源及作業系統可以實現資源的動態分配。
容器包含應用和其所有的依賴包,但是與其他容器共享內核。容器在宿主機作業系統中,在用戶空間以分離的進程運行
2、docker的特點
(1)效率高
用戶可以用幾分鐘把自己的程式docker化,docker依賴於寫時複製化(copy-on-write)模型,使用修改程式也非常迅速,可以達到「隨心所致,程式碼即改」的境界。
(2)職責明確
使用docker開發人員只需要關心容器中運行的應用程式,而運維人員只需要關心如何管理容器。docker設計的目的就是要加強開發人員寫程式碼的開發環境與應用程式要部署的環境的一致性。
(3)結構完整
docker的目標之一就是縮短程式碼從開發,測試到部署、上線的運行周期,讓你應用程式具備可移植性,易於構建,並易於協作。
(4)契合微服務架構
docker還鼓勵面向服務的體系架構和微服務架構。
2、docker的架構

(1)docker daemon(docker守護進程)
docker daemon是一個運行在宿主機(dock host)的後台進程,我們可通過docker客戶端與之通訊。
(2)Client(docker客戶端)
docker客戶端是docker的用戶介面,它可以接受用戶命令和配置標識,並與docker daemon通訊,上圖中docker build等都是docker的相關命令。
(3)images(docker鏡像)
docker鏡像是一個只讀模板,它包含創建docker容器的說明。他和系統安裝光碟有點像-我們使用系統安裝光碟安裝系統,同理,我們使用docker鏡像運行docker鏡像中的程式。
(4)Container(容器)
容器是鏡像的可運行實例。鏡像和容器的關係有點類似於面向對象中,類和對象的關係,我們可以通過docker API或者CLI命令來啟動,移動,刪除容器。
(5)Registry(倉庫)
docker Registry是一個集中存儲和分發鏡像的服務,我們構建完docker鏡像後,就可以在當前宿主機上運行,但如果想要在其他機器上運行這個鏡像,我們就需要手動拷貝,此時我們可以藉助docker Resgistry來避免鏡像的手動拷貝。