Docker 環境搭建請移步:https://i.cnblogs.com/posts/edit;postId=14090026
First:docker能做什么?
傳統的環境部署:
1、環境和項目分開搭建部署,環境離散,不方便遷移
2、環境未隔離
3、部署相對來說比較復雜/困難(tomcat+jdk+...),需要手動封裝
4、研發提交代碼-CICD-打包war推送至目標服務器,運行sh
*** 在 Dokcer 橫空出世之前,應用打包一直是大部分研發團隊的痛點。
*** 在工作中,面對多種服務,多個服務器,以及多種環境,如果還繼續用傳統的方式打包部署,會浪費大量時間精力
*** 在 Docker 出現后,它以更高效的利用系統資源、更高效的利用系統資源、一致的運行環境、持續交付和部署、更輕松的遷移、更輕松的維護和拓展,6大優點迅速火了起來
docker能解決什么問題:
1、高效有序利用資源
2、機器資源有限;
3、單台機器得部署多個應用;
4、應用之間互相隔離;
5、應用之間不能發生資源搶占,每個應用只能使用事先注冊申請的資源。
一次編譯,到處運行:
類似於java代碼,應用及依賴的環境構建一次,可以到處運行。
– 左邊為虛擬機,右邊為docker環境 –
Server
:物理機服務器 Host OS
:構建的操作系統 Hypervisor
:一種虛擬機軟件,裝了之后才能虛擬化操作系統 Guest OS
:虛擬化的操作系統 Bins/Libs
:執行命令、工具 App A
:構建的軟件 Docker Engine
:跳過虛擬化內核的步驟,直接使用宿主機內核
從圖片中我們可以清楚的了解到,相比於 Docker,虛擬機更加的臃腫。
虛擬機和容器都需要物理機以及操作系統,但是虛擬機有 Hypervisor 層以及 Guest OS 層。但是 Docker 是沒有這兩個部分的,只有一層 Docker Engine。
並且每個容器都和宿主機共享計算機的硬件資源以及操作系統。那么由Hypervisor帶來的資源耗損,在容器這邊是不存在的。
所以Docker與虛擬機對比,是有很強大的優勢的,當然,也會有一定的缺點
虛擬機 與 docker 優劣勢對比:
優勢(省去了虛擬化內核的步驟):
1. 節省資源(CPU、內存)
2. 秒級啟動
3. 輕量級方案(同樣一台服務器可以啟動幾百個docker,但是不能啟動幾百個虛擬機)
劣勢:
1. 隔離性、安全性相比虛擬機更弱(比如,如果其中一個容器將內核給"搞壞了",那所有的容器就都無法正常工作了)
2. 某些情況下服務器會挑內核(eg.編譯c++)
Docker的作用(相對於測試童鞋):
1. 搭建測試環境
2. 搭建各類基礎服務
3. 搭建測試執行環境(自動化測試腳本執行環境)
Second:docker核心概念(鏡像 / 容器 / 倉庫)
鏡像:
鏡像:
只讀文件和文件夾組合,是docker容器啟動的先決條件--靜態的
--自己搭建(eg:基於centos,安裝nginx,部署應用,自定義配置)
--拉取別人已經做好的鏡像
鏡像加載的原理:
docker鏡像是由一層一層的文件系統組成,就是聯合文件系統。
例如:tomcat鏡像
容器:
1、容器是鏡像的運行實體
2、容器運行的是真正的應用程序
3、容器有5種狀態:初建、查看、運行、停止、暫停、刪除
4、雖然容器是宿主機運行的進程,但容器有自己的運行控件和資源限制,所以,在容器內部是看不到宿主機的進程、環境變量、網絡等信息
5、容器是基於鏡像創建的實例,可單獨存在。一個鏡像可以創建多個容器。
倉庫:
1、倉庫是用於存儲和分發docker鏡像
2、--公共鏡像倉庫-docker hub(官方、個人)
3、--私有鏡像倉庫
鏡像、容器和倉庫之間的關系:
整體質量流程:
# 后續將持續更新docker在實際工作中的使用,感興趣的童鞋,歡迎關注留言討論哦