1. 程式人生 > 其它 >1.docker概述

1.docker概述

0x01. docker學習路線

  • Docker概述

  • Docker安裝

  • Docker命令

    • 映象命令
    • 容器命令
    • 操作命令
    • ........
  • Docker映象

  • 容器資料卷

  • DockerFile

  • Docker網路原理

  • IDEA整合Docker

  • Docker Compose

  • Docker Swarm

  • CI\CD Jenkins

0x02. 什麼是docker

官網 : https://www.docker.com/

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是核心級別的虛擬化,可以再一個物理機上可以執行很多的容器例項!伺服器的效能可以被壓榨到極致。