什麼是Docker,它可幹什麼?

定義
咱們知道,軟件依賴的環境大體包括:git

1• 配置文件
2• 代碼
3• tomcat
4• JDK
5• 操做系統docker

 



Docker做爲一個軟件集裝箱化平臺,可讓開發者構建應用程序時,將它與其依賴環境一塊兒打包到一個容器中,而後很容易地發佈和應用到任意平臺中。tomcat


思想:服務器

  1. 集裝箱
  2. 標準化
  3. 隔離

核心:工具

  1. docker有3大核心:鏡像、容器、倉庫。

 

鯨魚是操做系統。
要交付的應用程序是各類貨物,要將各類形狀和尺寸不一樣的貨物放到大鯨魚上,得考慮每件貨物怎麼安放(應用程序配套的環境),還得考慮貨物和貨物之間可否重疊起來(應用程序依賴的環境是否會衝突)。
如今使用了集裝箱(容器)把每件貨物都放到集裝箱裏,這樣大鯨魚能夠用一樣地方式安放、堆疊集裝了,省事省力。
即:打包放到鯨魚上,鯨魚放到服務器上。也就是「build——ship——run」,這樣在本身的電腦上怎麼運行,在服務器上也會怎麼運行。
用docker運行一個程序的過程:
去倉庫把鏡像拉到本地,而後用一條命令把鏡像運行起來,變成容器。測試

(1) 鏡像-複製的程序
定義:
Docker 鏡像能夠看做是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。ui

做用
相似於虛擬機的快照,用來建立新的容器。spa

特色:
鏡像不包含任何動態數據,其內容在構建以後也不會被改變。操作系統


(2)容器-集裝箱
運行程序的地方
鏡像是靜態的,每一層都只是可讀的,而容器是動態的,裏面運行着咱們指定的應用。
(3)倉庫-存放鏡像的地方
存放鏡像的地方,和git相似
why?
在知乎上看到一個很好的解釋:.net

簡單來講就是,不一樣的應用程序所依賴的環境不同,若是把他們依賴的軟件都安裝在一個服務器上,不只須要調試好久,並且可能會有衝突。
若是想把兩個應用程序隔離起來,能夠在服務器上建立不一樣的虛擬機,不一樣的虛擬機放不一樣的應用,可是虛擬機的開銷比較高。docker做爲輕量級的虛擬機,是一個很好的工具。


做用?
解決運行環境不一致所致使的問題。這樣就不會產生「本地運行沒問題,可一到服務器上就不行了」的狀況。
限定最大的cpu使用內存硬盤,這樣就起到了隔離的做用,避免產生「一塊代碼產生死循環,把磁盤佔滿了,其它程序也掛了」的狀況。
雙11時擴展機器用。

總結成一句話:docker的標準化讓快速擴展,彈性伸縮變得簡單

使用以前和以後


以前,能夠發現,每發佈一個程序,都要走一遍如下的流程:

以後:


how?
docker安裝?
檢查計算機是否符合要求,版本和是否開啓了虛擬化之類的。
去官網下載並安裝
測試是否安裝成功
這是一篇描述在win10上安裝docker的博客:
https://blog.csdn.net/hunan961/article/details/79484098

docker的使用?——hello world
從中央庫中拉取鏡像

查詢到拉取成功

運行鏡像,查看到結果

原理解析

docker pull的時候,Docker damemon先在本地倉庫中找,若是沒有,再去中央倉庫中拉取,拉取到本地倉庫就行了。
docker run的時候,也是先在本地倉庫中找,若是有,直接放到容器裏用。不然,去中央倉庫中拉取。
---------------------
原文:https://blog.csdn.net/qsbbl/article/details/86715741

相關文章
相關標籤/搜索