Docker入門第一章
Docker為什麼出現?
一款產品:開發到上線 兩套環境!應用環境,應用配置!
可能在開發環境你的產品是正常的,但是到了線上環境你的產品可能就會出現各種原因,或許是因為環境的不同,也可能是因為配置的不同等等各種原因導致服務的不可用!對於運維來說,考驗就非常大。
環境配置是十分的麻煩,每一個機器都要部署環境(集群Redis、ES、Hadoop等等)!費時費力。
現在你需要發布一個項目(jar包 +(環境 Redis、Mysql、JDK、ES)),項目需要帶上環境安裝打包!此時Docker就可以幫你解決。
相當於Docker幫你將jar包和環境打包到一起部署上線,一套流程做完!
舉個抽象的例子你用Java開發的apk應用(應用商店)然後呂世昊使用apk安裝即可使用,而Docker是你用java開發一個jar,然後依賴一些環境如Mysql等等,而你只需要將這個jar和環境打包成一個鏡像文件然後發布Docker倉庫中(商店),呂世昊就可以下載你發布的Docker鏡像,一鍵運行就ok了。
Docker簡介
Docker是基於Go語言開發的!開源項目!
Docker的官網://www.docker.com
Docker的文檔地址://docs.docker.com/ (Docker的文檔是超級詳細的)
Docker的下載:(進入Docker文檔頁面就有下載的入口)
Docker的倉庫地址://hub.docker.com/
Docker和虛擬機的不同
傳統虛擬機,虛擬出一條硬體,運行一個完整的作業系統,然後在這個系統上安裝和運行軟體
Docker容器內的應用直接運行在宿主機的內容,Docker容器是沒有自己的內核的,也沒有虛擬我們的硬體,所以就輕便了
每個Docker容器間是互相隔離,每個Docker容器內都有一個屬於自己的文件系統,互不影響。
Docker的好處
應用更快速的交付和部署
傳統:給你一大堆幫助文檔,安裝程式。
Docker:打包鏡像發布測試,一鍵運行。
更便捷的升級和擴縮容
使用了Docker之後,我們部署應用就和搭積木一樣!
項目打包為一個鏡像,擴展 伺服器A!伺服器B!
更簡單的系統運維
在容器化之後,我們的開發,測試環境都是高度一致的。
更高效的計算資源利用:
Docker是內核級別的虛擬化,在一個物理機上可以運行很多容器實例。
Docker的基本組成
- Client:客戶端
- DOCKER_HOST:Docker的服務
- Registry:遠程倉庫
- docker build:構建一個容器
- docker pull:拉取一個容器
- docker run:運行一個容器
- Docker daemon:Docker的守護進程
- Images:鏡像(可以理解為Class類)(鏡像就好比是一個模板,可以通過模板創建容器實例或者說容器服務,一個鏡像可以創建多個實例)
- Containers:多個容器(可以理解為類實例出來的對象)(可以對容器進行啟動,停止,刪除等基本命令)
- Registry:遠程倉庫(存放鏡像的地方,倉庫分為公有倉庫和私有倉庫)(Docker Hub是國外的共有倉庫地址,可以配置鏡像加速使用中國阿里雲的倉庫)