真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么用Docker重新定義Java虛擬化部署

本篇內(nèi)容主要講解“怎么用Docker重新定義Java虛擬化部署”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么用Docker重新定義Java虛擬化部署”吧!

目前創(chuàng)新互聯(lián)建站已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、惠城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Docker是一個(gè)用于構(gòu)建、分發(fā)、運(yùn)行分布式應(yīng)用的開源平臺。Docker化的應(yīng)用可以在開發(fā)者的電腦上運(yùn)行,并能夠被部署到生產(chǎn)的云環(huán)境中,Docker正以前所未有的方式在持續(xù)集成和持續(xù)部署中發(fā)揮著巨大作用。希云認(rèn)為:在未來的工作中,Docker這個(gè)平臺是每個(gè)開發(fā)者都應(yīng)該熟悉的。

開源Java項(xiàng)目把Docker帶給Java開發(fā)者,后面會(huì)解釋為什么Docker對Java開發(fā)者那么重要,引導(dǎo)大家在Docker中安裝并部署Java應(yīng)用,并讓大家看到如何把Docker集成到構(gòu)建流程中。

>>Docker技術(shù)快速指南
Docker有它自己的術(shù)語,這些術(shù)語會(huì)在本文中反復(fù)用到,請先花一些時(shí)間去熟悉它們:
Docker引擎(Docker engine):服務(wù)器上的一個(gè)守護(hù)進(jìn)程,它是你和Docker應(yīng)用與所依賴的操作系統(tǒng)的橋梁。
Dockerfile:一個(gè)文本文件,內(nèi)容是用于構(gòu)建Docker鏡像的指令。
Docker 鏡像: 構(gòu)建一個(gè)Dockerfile的產(chǎn)物,構(gòu)建過程中執(zhí)行Dockerfile中的命令,會(huì)生成一個(gè)鏡像。它首先會(huì)基于一個(gè)根系統(tǒng)(基礎(chǔ)鏡像)構(gòu)建,然后安裝應(yīng)用,接著執(zhí)行一系列命令來準(zhǔn)備啟動(dòng)應(yīng)用的環(huán)境。Docker鏡像作為Docker容器的基礎(chǔ),相當(dāng)于容器的一個(gè)靜態(tài)模塊。
Docker 容器:一個(gè)Docker鏡像的運(yùn)行時(shí)實(shí)例,Docker鏡像類似于模塊的概念(從Dockerfile構(gòu)建,這個(gè)Dockerfile包含了根系統(tǒng),應(yīng)用以及一系列構(gòu)建鏡像的命令),容器是那個(gè)鏡像的一個(gè)實(shí)際能運(yùn)行的實(shí)例。
Docker 宿主: 一個(gè)物理機(jī)或者虛擬機(jī),在此系統(tǒng)上運(yùn)行著Docker引擎,維持著容器所依賴的Dockerhub。
DockerHub :官方的Docker鏡像倉庫,把DockerHub想象為GitHub倉庫,對于Git來說是中央倉庫,DockerHub是官方保存及提供Docker鏡像的中央倉庫。
cSphereHub:希云官方的Docker微鏡像倉庫,DockerHub中有非常多的鏡像,但cSphereHub中存放了精心挑選出來的,并精心制作的鏡像。

>>>Docker簡介


在二十多年前,軟件應(yīng)用曾經(jīng)是非常龐大并且復(fù)雜的,會(huì)被部署在大型的計(jì)算機(jī)上。在Java的世界里邊,我們開發(fā)的企業(yè)軟件包(EAR)中,包含企業(yè)JavaBean(EJB)和web組件(WAR),然后會(huì)部署在大型應(yīng)用服務(wù)器上。為了能盡量有效地利用這些大型計(jì)算機(jī)上的資源,我們會(huì)盡最大能力去設(shè)計(jì)這些應(yīng)用。

在21世紀(jì)早期,隨著云計(jì)算的出現(xiàn),開發(fā)者們開始使用虛擬機(jī)以及服務(wù)器集群,去擴(kuò)展應(yīng)用以滿足需求。要以虛擬化的方式部署應(yīng)用,應(yīng)用必須被設(shè)計(jì)得與傳統(tǒng)方式有所不同,輕量級,面向?qū)ο蟮膽?yīng)用成為新標(biāo)準(zhǔn)。我們學(xué)會(huì)了把軟件做成各種能互聯(lián)的服務(wù)集合,將各組件盡可能地設(shè)計(jì)成無狀態(tài)??蓴U(kuò)展架構(gòu)的概念和實(shí)現(xiàn)都發(fā)生了變化,不再是依賴于單臺大型計(jì)算機(jī)的垂直擴(kuò)展,開發(fā)者和架構(gòu)師開始思考以水平擴(kuò)展方式實(shí)現(xiàn):如何把單個(gè)應(yīng)用部署到數(shù)個(gè)輕量級的計(jì)算機(jī)上。

Docker的出現(xiàn)使虛擬化更向前邁進(jìn)了一步,提供了一個(gè)輕量級的層,處于應(yīng)用和所依賴的硬件中間,Docker把應(yīng)用當(dāng)作是宿主系統(tǒng)的一個(gè)進(jìn)程來運(yùn)行。圖一對比了傳統(tǒng)虛擬機(jī)和Docker。

怎么用Docker重新定義Java虛擬化部署


圖 1. 虛擬機(jī)與Docker的比較

傳統(tǒng)的虛擬機(jī)會(huì)在宿主系統(tǒng)運(yùn)行著一個(gè)虛擬機(jī)監(jiān)視器,并在虛擬機(jī)中運(yùn)行著一個(gè)完整的客戶系統(tǒng)(GuestOS),應(yīng)用依賴的所有包都在客戶系統(tǒng)中。

相反地,Docker有個(gè)Docker引擎,也是一個(gè)運(yùn)行在宿主系統(tǒng)的守護(hù)進(jìn)程。Docker引擎把Docker容器中的系統(tǒng)調(diào)用,翻譯成宿主系統(tǒng)的原生調(diào)用。一個(gè)Docker鏡像,作為Docker容器的創(chuàng)建模板,只是包含了操作系統(tǒng)的最小層,以及僅僅是應(yīng)用所需要的依賴庫。

大家看起來感覺這些差異似乎不大,但實(shí)際上卻是天壤之別。Docker的優(yōu)勢很大一部分都是在這點(diǎn)體現(xiàn)出來!

>>>理解進(jìn)程虛擬化


我們仔細(xì)分析一下虛擬機(jī)中的操作系統(tǒng),我們會(huì)留意到虛擬機(jī)中的資源,例如CPU和內(nèi)存。但當(dāng)我們運(yùn)行一個(gè)Docker容器,我們會(huì)直接看到宿主機(jī)上的資源。我把Docker看成是進(jìn)程級的虛擬化平臺,而不是系統(tǒng)級的虛擬化平臺?;旧希瑧?yīng)用是作為一個(gè)獨(dú)立的自包含進(jìn)程運(yùn)行在宿主機(jī)上,Docker通過借助著Linux上幾個(gè)強(qiáng)大的組件,實(shí)現(xiàn)了隔離性,確保了每個(gè)進(jìn)程都是操作系統(tǒng)上的獨(dú)立進(jìn)程。

因?yàn)镈ocker化的應(yīng)用與宿主機(jī)上的進(jìn)程運(yùn)行方式類似,所以設(shè)計(jì)上也和虛擬機(jī)中的應(yīng)用不同。舉個(gè)例子說,我們通常會(huì)在一個(gè)虛擬機(jī)上運(yùn)行Tomcat和MySQL數(shù)據(jù)庫,但Docker的實(shí)踐中,我們會(huì)把a(bǔ)pp服務(wù)器與數(shù)據(jù)庫分別部署,各自運(yùn)行在不同的容器中。這樣讓Docker更好地管理宿主系統(tǒng)上的獨(dú)立單元,這意味著要更有效率地使用Docker,我們需要以適當(dāng)?shù)牧6仍O(shè)計(jì)應(yīng)用,例如微服務(wù)的方式。

>>>Docker中的微服務(wù)

簡單來說,微服務(wù)是一種可以促進(jìn)系統(tǒng)模塊化的架構(gòu)方式。在微服務(wù)架構(gòu)中,復(fù)雜的應(yīng)用以更小的獨(dú)立進(jìn)程組成,各個(gè)進(jìn)程有一個(gè)或多個(gè)特定的功能,應(yīng)用與語言無關(guān)的API和其他進(jìn)程通信。

微服務(wù)是通過粒度非常小,高度解耦的服務(wù)集合,來提供單一或多個(gè)相關(guān)聯(lián)的功能。例如,如果你正在管理著一個(gè)用戶中心和購物車,那你很可能是選擇把它們設(shè)計(jì)成獨(dú)立的服務(wù),如用戶中心服務(wù)和購物車服務(wù);而不是把兩個(gè)模塊打成一個(gè)包作為一個(gè)服務(wù)運(yùn)行。更具體來說,使用微服務(wù)意味著構(gòu)建web services,而且是最常見的[RESTful web service] ,并把它們按功能分組。在Java中,我們會(huì)把這些服務(wù)打成WAR包,并部署到一個(gè)容器中,例如Tomcat,然后運(yùn)行Tomcat和Docker容器中的服務(wù)。

>>>安裝Docker


在我們深入研究Docker之前,先讓我們把本地環(huán)境搭建起來。如果你正在使用Linux系統(tǒng),那非常好,你可以直接安裝并運(yùn)行Docker。對于那些使用Windows或者M(jìn)ac的用戶來說,Docker可以通過一個(gè)叫Docker Toolbox的工具來使用,這個(gè)工具會(huì)安裝一個(gè)虛擬機(jī)(使用Oracle的Virtual Box),這個(gè)虛擬機(jī)中會(huì)運(yùn)行著包含Docker守護(hù)進(jìn)程的Linux系統(tǒng)。我們可以使用Docker客戶端把指令發(fā)送給守護(hù)進(jìn)程處理,注意,你不需要管理這個(gè)虛擬機(jī),只要安裝這個(gè)工具并執(zhí)行Docker命令行工具即可。

開始從[Mac],[Windows],或[Linux]相應(yīng)的文檔里[下載Docker]。

我的電腦是Mac,所以我下載并運(yùn)行了Mac版的Docker Toolbox安裝包,之后我運(yùn)行了Docker Quickstart終端,這樣會(huì)啟動(dòng)一個(gè)Virtual Box鏡像和一個(gè)命令行終端。這個(gè)安裝過程與Windows下的基本相同,更多請參考Windows版的文檔。

>>>DockerHub: Docker的鏡像倉庫

我們開始使用Docker之前,先花幾分鐘去訪問一下[cSphereHub](https://csphere.cn/hub/),這個(gè)鏡像倉庫。瀏覽一下cSphereHub,你會(huì)發(fā)現(xiàn)上邊有數(shù)個(gè)鏡像,精挑細(xì)選的微鏡像。如果使用cSphere管理平臺,添加**微鏡像倉庫**后,倉庫里面包含了docker官方的一些鏡像。鏡像倉庫中有基礎(chǔ)系統(tǒng),如Alpine, Ubuntu,或者Java相關(guān)的如Tomcat, jdk, jre等等。你還可以發(fā)現(xiàn)幾乎所有流行的應(yīng)用上邊都會(huì)有,包括MySQL, MongoDB, Neo4j, redis, Memcached, Postgres, Nginx, Node.js, WordPress, PHP, Perl, Ruby等等。在你打算自行構(gòu)建一個(gè)新鏡像之前,請確認(rèn)cSphereHub,或者DockerHub上有沒有。

作為一個(gè)練習(xí),我們運(yùn)行一個(gè)簡單的CentOS鏡像,在Docker Toolbox的命令行中輸入:

```sh
$ docker run -it centos
```

這個(gè)docker命令是你與Docker守護(hù)進(jìn)程的主要接口。run指令告訴Docker去下載并運(yùn)行指定的鏡像(假設(shè)在本地還沒有這個(gè)鏡像)。又或者,你可以用pull命令直接下載一個(gè)鏡像但不運(yùn)行它。有兩個(gè)參數(shù):i 會(huì)讓Docker用交互模式運(yùn)行,t 會(huì)讓它創(chuàng)建一個(gè)TTY終端。注意非官方的鏡像使用既定的格式"用戶名/鏡像名",而官方的鏡像會(huì)省略用戶名,所以我們只需要指定"centos"來運(yùn)行鏡像即可。另外,也可以在鏡像名后加“:版本號”指定版本號,例如,centos:7。每個(gè)鏡像默認(rèn)使用的都是最新版本,當(dāng)前CentOS最新版本號是7.

在運(yùn)行$ docker run -it centos 之后,你會(huì)見到Docker開始下載這個(gè)鏡像,完成后會(huì)見到類似以下的輸出:
```sh
$ docker run -it centos
[root@dcd69de89aad /]#   
```
因?yàn)槲覀冇昧私换ツJ饺ミ\(yùn)行,它顯示了一個(gè)root用戶的shell命令提示符。查看一下這個(gè)系統(tǒng),然后使用exit退出。

可以用docker images命令來查看系統(tǒng)中已下載好的鏡像:
```sh
$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
java                        8                   5282faca75e8        4 weeks ago         817.6 MB
tomcat                      latest              71093fb71661        8 weeks ago         347.7 MB
centos                      latest              7322fbe74aa5        11 weeks ago        172.2 MB
```
你可以看到我已經(jīng)有了最新版的CentOS、Tomcat和Java 8。

未完待續(xù)...

到此,相信大家對“怎么用Docker重新定義Java虛擬化部署”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:怎么用Docker重新定義Java虛擬化部署
網(wǎng)頁鏈接:http://weahome.cn/article/jjdieh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部