微服務為什么一定要用docker?今天通過一篇文章為大家分享docker入門詳解,歡迎大家一起閱讀!
一、微服務架構介紹
1. 通過將功能分解到各個離散的服務中以實現對解決方案的解耦。
2. 你可以將其看作是在架構層次而非獲取服務的
1、程序開發的角度:
把一個大型的單個應用程序和服務拆分為數個甚至數十個的支持微服務,它可擴展單個組件而不是整個
的應用程序堆棧,從而滿足服務等級協議。
2、定義:
圍繞業務領域組件來創建應用,這些應用可獨立地進行開發、管理和迭代。在分散的組件中
使用雲架構和平台式部署、管理和服務功能,使產品交付變得更加簡單。
微服務(Microservice)這個概念是2012年出現的,作為加快Web和移動應用程序開發進程的一種方
法,2014年開始受到各方的關注,而2015年,可以說是微服務的元年;
二. 傳統開發模式和微服務的區別:
1. 傳統開模式:
缺點:
1、效率低:開發都在同一個項目改代碼,相互等待,沖突不斷
2、維護難:代碼功能耦合在一起,新人不知道何從下手
3、不靈活:構建時間長,任何小修改都要重構整個項目,耗時
4、穩定性差:一個微小的問題,都可能導致整個應用掛掉
5、擴展性不夠:無法滿足高並發下的業務需求
基於微服務的開發模式:
1、一些列的獨立的服務共同組成系統
2、一些列的獨立的服務共同組成系統
3、單獨部署,跑在自己的進程中
4、每個服務為獨立的業務開發
5、分布式管理
6、非常強調隔離性
Java :一次編譯,到處運行 JVM Java虛擬機
Docker :真正實現一次編譯,到處運行
Docker 是一個開源的應用容器引擎,它基於 Google 公司推出的 Go 語言實現
讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或
Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
01、虛擬化容器技術-Docker簡介
目標
了解虛擬化技術
概述
在計算機中,虛擬化(英語:Virtualization)是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
(比如:vmware也是一個虛擬資源,大家都在使用vmware,大家都是在上面建立一個虛擬機,其實這就是一種虛擬化技術,或者半虛擬化技術,大家是不是使用vmware安裝一個centos的系統或者安裝一個windows的系統。那么你在上面操作其實和你在實體機上操作是不是比較類似,對吧,他們之間這種技術就是虛擬化技術。
這種虛擬化技術它有一個小小的弊端,我們在我們的vmware上面創建了一個centos的虛擬機,它在使用的時候是以我當前的操作系統緊密相連的,簡單點說,你的操作系統內存只有4G,你在創建虛擬機的時候你會分配8個G嗎?
說不能,說明虛擬機是依賴我們的當前的物理系統,它只不過是在之上構建了虛擬的系統,我們就可以使用它,這種其實就是一種半虛擬化技術。)這種虛擬機技術,完全依賴底層的宿主機,每個虛擬機本身都是獨立的,隔離的,每一個都有自己單獨的內存,資源沒有辦法達到共享,資源達不到最大化的利用和使用。而docker和它不一樣,它是共享的,大白話就是我的上面有docker容器可以共享我的資源,這個時候就會在宿主機上或者一台主機上,我可以部署很多個docker容器,他們是共享的 docker這種容器技術,給我們的開發和運維去做一個統一的環境,是非常非常好的,也是非常高效和快捷的。
大家知道在真實的開發中,開發人員和與運維人員經常因為環境的問題出現故障和扯皮,這個是非常常見的糾紛,比如你在電腦上的環境都是你自己安裝部署的,ok你開發完了運行沒有任何問題,但是測試人員在測試的時候出問題了。為什么呢?因為它和你的環境不一樣,比如你使用的是jdk1.8他使用的是1.7,常常因為各種版本的問題造成不必要的麻煩,而使用docker這個容器,首先他的第一件事情就是它能幫助我們統一運行環境。這樣的話,這樣的話能提高我們的開發效率,因為大家都使用的是同一個環境。所以說呀,docker以后在未來的開發環境中,用的越來越多,但是呢,docker在真正的學習過程中,它是有點偏運維方面。這也就是為什么現在招聘里面有一個職位叫:運維開發工程師
02.Docker和虛擬機形象比喻
什么是物理機
什么是虛擬機
什么是docker
03、虛擬化容器技術--什么是Docker
官網:https://www.docker.com/
圖例:
一頭鯨魚通過身上的集裝箱(Container)來將不同種類的貨物進行隔離,而不是通過生出很多小鯨魚來承運不同種類的貨物。Docker是一個開源的應用容器引擎,基於GO語言並遵從 Apache2.0協議開源。Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的容器是完成使用沙箱機制,相互之間不會有任何接口重疊,更重要的容器性能開銷極低。一個完整的Docker基本架構由如下幾個部分構成:客戶端,宿主機,注冊中心
1:Docker客戶端
也就是在窗口中執行的命令,都是客戶端
2:Docker Daemon守護進程
用於去接受client的請求並處理請求
3:倉庫:
Docker用Registry來保存用戶構建的鏡像。Registry分為公共和私有兩種。Docker公司運營公共的Registry叫做Docker Hub。遠程倉庫地址:https://hub.docker.com/
4:鏡像:
簡單點說:鏡像不是單一的文件:而是有多層構成,我們可以通過 docker history 鏡像名|id 查看鏡像中各層內容及大小,每層都對應着Dockerfifile中的一條指令。Docker鏡像默認存在/var/lib/docker/中。鏡像從何而來:Docker Hub是由docker公司負責和維護的公共注冊中心,包含大量的鏡像文件,Docker客戶端工具默認從這個公共鏡像倉庫下載鏡像, 遠程倉庫地址:https://hub.docker.com/
5:容器
容器其實是在鏡像的最上面加了一層讀寫層,在運行容器里做的任何文件改動,都會寫到這個讀寫層。如果容器刪除了,最上面的讀寫層也就刪除了,改動也就丟失了。Docker使用存儲驅動管理鏡像每層內容及可讀寫層的容器層。
04、虛擬化容器技術-- 什么鏡像
遠程倉庫鏡像地址:https://hub.docker.com/
解釋:鏡像就像你下載了一個gz或zip壓縮包。只不過這個鏡像文件中意見包括了幾個部分:
1:微型計算機(文件系統,網絡)
2:當前鏡像的文件,比如你下載的tomcat,tomcat的鏡像文件就包括了:微型計算機 + Tomcat環境+Jdk環境 = Tomcat鏡像
05、虛擬化容器技術-- 什么容器
什么是容器:就是鏡像創建出來的一個運行的系統,與其說是系統還不如說,容器就是一個進程。就好比你之前下載了tomcat就開始進行解壓安裝和運行。
當下Docker容器化技術的背景和支撐
總結
什么是Docker
1:使用最廣泛的開源容器.
2:一種操作系統的虛擬化技術 linux 內核
3:依賴於Linux內核特性:NameSpace和Cgroups
4:一個簡單的應用程序打包工具
作用和目的
1:提供簡單的應用程序打包工具
2:開發人員和運維人員職責邏輯分離
3:多環境保持一致。消除了環境的差異。
Docker的應用場景
1:應用程序的打包和發布
2:應用程序隔離
3:持續集成
4:部署微服務
5:快速搭建測試環境
6:提供PaaS平台級產品
容器帶來的好處有哪些?
1)秒級的交付和部署
2)保證環境一致性
3)高效的資源利用
4)彈性的伸縮
5)動態調度遷移成本低
大家需要注意:
Docker本身並不是容器,它是創建容器的工具,是應用容器引擎 。
一. 想要搞懂Docker,其實看它的兩句口號就行 :第一句,是“Build, Ship and Run”
也就是
搭建、發送、運行 三板斧
第二句口號就是:“Build once,Run anywhere**(搭建一次,到處能用)**”。
Docker技術的三大核心概念,分別是:
鏡像(Image)
容器(Container)
倉庫(Repository
負責對Docker鏡像進行管理的,是Docker Registry服務(類似倉庫管理員)。
不是任何人建的任何鏡像都是合法的。萬一有人蓋了一個有問題的房子呢?所以,Docker Registry服務對鏡像的管理是非常嚴格的。最常使用的Registry公開服務,是官方的Docker Hub,這也是默認的Registry,並擁有大量的高質量的官方鏡像。
如果需要本期圖文教程的視頻教程,請關注“艾編程”公眾號,看本期課程的視頻+圖文教程,還能獲取更多課程視頻資料哦!