1.docker概述
0x01. docker學習路線
-
Docker概述
-
Docker安裝
-
Docker命令
- 映象命令
- 容器命令
- 操作命令
- ........
-
Docker映象
-
容器資料卷
-
DockerFile
-
Docker網路原理
-
IDEA整合Docker
-
Docker Compose
-
Docker Swarm
-
CI\CD Jenkins
0x02. 什麼是docker
Docker 是一個(基於go語言)開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的映象中,然後釋出到任何流行的 Linux或
Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面,也就是說互不影響
0x03. 為什麼要有docker
1. 產生的問題
假如說一款產品從開發到上線, 一般情況下都是兩套環境。一個開發環境,一個生產環境。往往要將開發的應用部署到生產環境上的時候,如果環境複雜就會出現一個尷尬的事情,就是我在我的電腦上可以執行,運維人員部署到機房就不行。一般環境配置是一件相當麻煩的事情,費事又費力
釋出一個專案 ( jar ) + ( redis mysql jdk es ) , 專案能不能都帶上環境安裝打包?
而且之前應用的環境還不能跨平臺, 開發往往是在windows下開發, 但是部署的伺服器都是LCX作業系統, 所以不支援跨平臺
傳統: jar + 運維
現在: 開發打包部署上線, 一套流程一個人就能幹
2. 解決方案
Docker給以上問題提供瞭解決方案!
java --- apk --- 釋出(應用商店) --- 張三使用apk --- 安裝即可用
java --- jar(環境) --- 打包專案帶上環境 ( 映象/容器 ) --- (Docker倉庫: 商店) --- 下載映象 --- 直接執行
0x04. Docker歷史
2010年, 幾個搞IT的小夥子, 在美國成立了一家公司dotCloud
, 他們主要做一些pass的雲端計算服務!linux有關的容器技術, 然後他們將自己的技術( 容器化技術 ) 命名為Docker , 但是Docker剛剛誕生的時候 , 實際上並不是一出就火, 也沒有引起行業的關注, 但是這個家公司還要經營下去。怎麼辦呢?
2013年, Docker的老闆將Docker開源, 越來越多的人注意到Docker, 覺得這個玩意挺好用的, 然後就火了
開源以後, Docker幾乎一個月更新一次, 說明這個社群十分的活躍, 2014年4月9日 , Docker1.0釋出
Docker為什麼這麼火?十分的輕巧!
在容器技術出來之前,我們都是使用虛擬機器技術!
虛擬機器∶在window中裝一個Vmware,通過這個軟體我們可以虛擬出來一臺或者多臺電腦!笨重!虛擬機器也是屬於
虛擬化技術,Docker容器技術,也是一種虛擬化技術!
vm : linux centos原生映象(一個電腦!) 隔離,需要開啟多個虛擬機器! 十幾個G 幾分鐘
docker : 隔離,映象(最核心的環境4m + jdk + mysq1)十分的小巧,執行映象就可以了! 小巧! 幾個M KB
秒級啟動!
0x05. Docker的使用
文件官網 : https://docs.docker.com/ 超級詳細的
下載安裝頁面 : https://docs.docker.com/get-docker/
Docker的倉庫地址: https://hub.docker.com/ 可以下載,釋出docker映象
0x06. docker能幹什麼
Docker的思想實際上就來源於logo中的集裝箱 , 可以在一條船上累計多個集裝箱, 每個之間互不影響
對映到我們計算機上就是使用Docker可以安裝多個專案+環境, 每個之間相互不影響, 可以同時存在
Docker的核心思想 : 隔離
之前的虛擬化技術
虛擬技術的缺點:
- 資源佔用多
- 冗餘步驟多
- 啟動很慢
容器化技術
容器化技術不是模擬的一個完整的作業系統
Docker和虛擬機器的不同
- 傳統的虛擬機器, 虛擬出一套硬體, 執行一個完整的作業系統, 然後在這個系統上安裝和執行軟體
- 容器內的應用直接執行在宿主機的核心, 容器是沒有自己的核心的, 也沒有虛擬我們的硬體, 所以很快, 因為每個容器間是相互隔離的, 每個容器內都有一個屬於自己的檔案環境, 互不影響
DevOps ( 開發 運維 )
應用更快速的交付和部署
傳統 : 一堆幫助文件,安裝程式
Docker : 打包映象釋出測試,一鍵執行
更便捷的升級和擴縮容
使用了Docker之後,我們部署應用就和搭積木一樣!
專案打包為一個映象,擴充套件伺服器A!伺服器B
更簡單的系統運維
在容器化之後,我們的開發,測試環境都是高度一致的。
更高效的計算資源利用
Docker是核心級別的虛擬化,可以再一個物理機上可以執行很多的容器例項!伺服器的效能可以被壓榨到極致。