亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

在docker中用Tomcat運(yùn)行web項(xiàng)目

vpants / 938人閱讀

摘要:重新執(zhí)行看控制臺(tái)的輸出可以看到已經(jīng)在運(yùn)行,代表所用鏡像以及鏡像版本,顯示的是。把文件夾掛載成功之后,此時(shí)我們把項(xiàng)目丟到宿主機(jī)中的下,重啟容器后,再用訪問,就會(huì)展示我們的項(xiàng)目的內(nèi)容了。到這里,中用運(yùn)行項(xiàng)目的工作已經(jīng)完成。

本文旨在用最通俗的語言講述最枯燥的基本知識

上一篇文章《為什么要用docker》已經(jīng)講述了什么是docker以及我們要用docker的原因,并且講解了如何安裝docker。這時(shí)候很多讀者磨拳擦腳躍躍欲試但卻發(fā)現(xiàn)安裝好docker之后就無從下手了,那么,接下來,小編會(huì)從以下方面講述docker的一些基礎(chǔ)知識,當(dāng)然,理論都是生硬的,所以小編選取了javaweb項(xiàng)目中最常用的一個(gè)軟件--tomcat的安裝和使用來引導(dǎo)學(xué)習(xí)一些docker相關(guān)的知識,借此讓讀者能夠從實(shí)戰(zhàn)的角度去理解docker為什么會(huì)有這些基礎(chǔ)知識以及如何使用這些基礎(chǔ)知識。

我們知道,web開發(fā)和部署離不開tomcat,而在目前的實(shí)際情況是:
一個(gè)項(xiàng)目中,每個(gè)開發(fā)者本機(jī)電腦都有自己的tomcat或者用idea的內(nèi)置tomcat,當(dāng)我們開發(fā)完成提交測試時(shí),測試服務(wù)器上也有一個(gè)tomcat;當(dāng)項(xiàng)目上線時(shí),線上服務(wù)器也有一個(gè)tomcat,因此就很容易出現(xiàn)一些奇奇怪怪的問題,比如在同事A電腦上能正常運(yùn)行的,到同事B電腦上就出問題的;或者是在測試環(huán)境里一切正常,到了線上bug一堆。這時(shí)候docker就有了用武之地,項(xiàng)目負(fù)責(zé)人把docker的tomcat鏡像做好了之后上傳到鏡像倉庫,項(xiàng)目成員的電腦環(huán)境、測試環(huán)境、線上環(huán)境均拉取這個(gè)tomcat使用,就能保持在所有的環(huán)境下tomcat的版本、設(shè)置都是一致的,避免了一些非技術(shù)的問題。
那么,現(xiàn)在我們就用docker來做一個(gè)tomcat的環(huán)境。

鏡像的查找和拉取

首先,我們需要去鏡像倉庫找到我們要的鏡像,查找鏡像的語法是

docker search 鏡像名稱:鏡像TAG

因此,查找Tomcat鏡像:

docker search tomcat

有讀者會(huì)疑問:什么是鏡像TAG?
鏡像的TAG值就是鏡像的版本,就比如Tomcat有7.0、8.5、9.0等我們常用的版本,那么相應(yīng)的這些軟件被做成docker鏡像之后,官方也會(huì)根據(jù)軟件本身的版本對應(yīng)出docker鏡像的版本。
下圖為查找結(jié)果:

可以看到,有很多的Tomcat鏡像,那么我們應(yīng)該怎么選用這些鏡像呢?通常情況下,我們都知道官方的東西基本上代表安全無公害,因?yàn)榭梢钥吹接疫呌衞fficial標(biāo)識為OK的就是官方的鏡像,因此我們拉取第一個(gè)Tomcat就可以。
拉取鏡像的語法是:

docker pull 鏡像NAME:鏡像TAG

因?yàn)槲覀円omcat時(shí),就可以這樣寫:

docker pull tomcat

有人說你怎么沒加上鏡像TAG
在拉取鏡像時(shí),如果加上鏡像TAG,就會(huì)去查找是否有相應(yīng)版本的鏡像,如果有則拉取,如果沒有則不拉去。而沒有加TAG時(shí),就默認(rèn)代表拉取的是該鏡像的最新版本。

假如需要拉取固定版本如拉取Tomcat8.5:

docker pull tomcat:8.5

就會(huì)相應(yīng)的拉取了該版本的Tomcat鏡像。
拉取成功之后,我們要查看我們拉取的版本,可以用命名:

docker images

可以看到,鏡像列表里已經(jīng)有了我們要拉取的Tomcat鏡像

鏡像的使用

鏡像拉取下來之后,就如我們把從網(wǎng)上把下載到了本地電腦,但是沒有任何生命的跡象,只有把它安裝運(yùn)行起來,才是一個(gè)活的容器,相應(yīng)地,docker鏡像只有在run起來的時(shí)候,才是一個(gè)有生命的容器。
創(chuàng)建和運(yùn)行一個(gè)Tomcat容器只需要一行命令:

 
docker run  --name my_tomcat tomcat:8.5

其中 --name是指給容器起的名字,后面的tomcat是指下載的驚喜的NAME。8.5是鏡像TAG。
到這里,一個(gè)tomcat服務(wù)就安裝并且啟動(dòng)好了,因?yàn)槟J(rèn)的Tomcat端口都是8080,因此通常情況下此時(shí)我們用ip:8080就應(yīng)該可以訪問到Tomcat的標(biāo)志性主頁了。
但是!?。?br>事實(shí)并不是如此
因?yàn)槲覀兪窃赿ocker下運(yùn)行的容器,你們的腦海中可否還有docker的logo圖?
大海就相當(dāng)于我們的服務(wù)器(宿主機(jī)),而在海中游走的鯨魚就是docker服務(wù),而鯨魚上的每一個(gè)集裝箱都是一個(gè)容器,也就是說:
容器之間是互相隔離的,容器和宿主服務(wù)器也是互相隔離的。
因此我們在docker中運(yùn)行了一個(gè)Tomcat的服務(wù)器,雖然端口是8080,
但是~
那是容器中的8080端口,因此我們通過ip:8080訪問到的其實(shí)只是宿主機(jī)上的8080端口,并不是容器中的端口。
此時(shí)我們只需要把容器中的端口映射到宿主機(jī)上相應(yīng)的端口即可。
端口映射只需要在運(yùn)行時(shí)加入指令 -p 映射的宿主機(jī)端口:容器運(yùn)行端口
如下,把容器運(yùn)行的8080端口映射到宿主機(jī)的8099端口:
名稱設(shè)置為my_tomcat_1

docker run -p 8099:8080  --name my_tomcat_1 tomcat:8.5

此時(shí),你會(huì)發(fā)現(xiàn),控制臺(tái)打出了Tomcat啟動(dòng)的日志,啟動(dòng)完成后,我們在瀏覽器上用ip:8099訪問,就會(huì)發(fā)現(xiàn),Tomcat主頁就顯示了,說明Tomcat已經(jīng)正確地運(yùn)行起來了。
而用命令也可以查看容器是否起來,我們用docker ps 能查出本docker中運(yùn)行的多有容器:

docker ps

在Tomcat運(yùn)行的情況下,當(dāng)你用ctrl+c回到命令行輸入docker ps時(shí),發(fā)現(xiàn)并沒有找到my_tomcat_1這個(gè)Tomcat容器,而你重新用ip:8099發(fā)現(xiàn)Tomcat也不見了
噢 no!
什么原因?
這是因?yàn)椋?strong>在Linux下用指令的方式運(yùn)行程序,如果沒有加后臺(tái)執(zhí)行的指令,那么在切回到命令時(shí),程序就被殺死了。
因此,此時(shí)是因?yàn)槲覀冞\(yùn)行Tomcat容器時(shí),沒有設(shè)置在后臺(tái)運(yùn)行,因此,需要在運(yùn)行時(shí),加上后臺(tái)運(yùn)行的指令,在docker中設(shè)置后臺(tái)運(yùn)行只需要在run命名中加入-d即可。
因此我們重新運(yùn)行Tomcat,名稱設(shè)置為my_tomcat_2:

docker run -d -p 8099:8080  --name my_tomcat_2 tomcat:8.5

運(yùn)行完成后,此時(shí)我們放心大膽的回到命名行。重新執(zhí)行docker ps
看控制臺(tái)的輸出:

可以看到:my_tomcat_2已經(jīng)在運(yùn)行,IMAGE代表所用鏡像以及鏡像版本,PORTS顯示的是0.0.0.0:8099->8080/tcp 。代表的是把本機(jī)的8080端口映射到宿主機(jī)上的8099端口中。

但是,有讀者又有疑問了:
”Tomcat是運(yùn)行了,那我怎么把我的項(xiàng)目丟進(jìn)去docker的Tomcat中呢?我用FTP工具鏈接到服務(wù)器上也找不到Tomcat在哪里,怎么辦?”

上面提到,docker中容器和宿主機(jī)是互相隔離的,因此容器是不會(huì)在宿主機(jī)中有明確的文件夾路徑,所以找不到才是對的。
但是既然端口都能映射,為啥文件夾不能映射呢?
在docker中,可以用 -v 指令指定把容器中的某個(gè)文件夾掛載到宿主機(jī)中
它的語法為:

-v 宿主機(jī)目錄:容器目錄

所以我們可以在創(chuàng)建運(yùn)行一個(gè)容器時(shí),同時(shí)可以把指定的文件夾掛載到宿主機(jī)中
通常情況下,Tomcat運(yùn)行程序的文件是在webapps下的,那么可以在運(yùn)行時(shí)把這個(gè)文件夾掛載到宿主機(jī)某個(gè)路徑上(如:/data目錄中),
名稱設(shè)置為my_tomcat_3,端口設(shè)置為8098,要把容器中的webapps文件夾掛載到宿主機(jī)中/data/my_tomcat_3/webapps文件夾:

docker run -d -p 8098:8080 -v /data/my_tomcat_3/webapps:/usr/local/tomcat/webapps  --name my_tomcat_3  tomcat:8.5

此時(shí)我們再用FTP工具鏈接到宿主機(jī)服務(wù)器上,進(jìn)入data文件夾,就會(huì)發(fā)現(xiàn):my_tomcat_3/webapps文件夾已經(jīng)躺在里邊了,可見已經(jīng)掛載成功。

把文件夾掛載成功之后,此時(shí)我們把web項(xiàng)目丟到宿主機(jī)中的webapps下,重啟Tomcat容器后,再用ip:8099訪問,就會(huì)展示我們的web項(xiàng)目的內(nèi)容了。
到這里,docker中用Tomcat運(yùn)行web項(xiàng)目的工作已經(jīng)完成。

但是,回過頭來想想,留下很多問題:

docker run是創(chuàng)建并且運(yùn)行容器,那我怎么控制容器的狀態(tài)呢?比如啟動(dòng)和停止

為什么我在docker run時(shí)一直在重命名Tomcat的名字my_tomcat_1、my_tomcat_2、my_tomcat_3..

拉取和運(yùn)行了那么多鏡像,占據(jù)很多磁盤空間,怎么處理?

運(yùn)行后的Tomcat,怎么查看日志?

我想要修改一下Tomcat中的server.xml的設(shè)置,但是宿主機(jī)中有沒有這個(gè)文件,難道我要掛載出來嗎?

看完此文之后,你有什么問題嗎?歡迎讀者把問題后臺(tái)留言給小編或者加小編的微信,下一篇文章,小編會(huì)針對上面的問題以及讀者提出的問題,做一個(gè)完整的解答以及把如何做好的Tomcat上傳到鏡像倉庫做一個(gè)演示,所以:
關(guān)!注!我!

下期小編甚至?xí)殉S玫囊恍ヾocker命名整理出來,方便大家集中記憶和使用!


覺得本文對你有幫助?請分享給更多人
關(guān)注「編程無界」,提升裝逼技能

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28081.html

相關(guān)文章

  • 為什么要用docker?

    摘要:那容器和鏡像有什么關(guān)系網(wǎng)上說是類和對象的關(guān)系,沒錯(cuò),但是這樣的比喻沒什么實(shí)際卵用。針對這個(gè)問題,項(xiàng)目組決定把開發(fā)環(huán)境遷移到中,在測試環(huán)境中測試無誤后,把鏡像打包發(fā)布到正式環(huán)境中,解決了環(huán)境不同導(dǎo)致的問題。 本文旨在用最通俗的語言講述最枯燥的基本知識 最近Docker突然火得不得了,到處都是談?wù)揇ocker的聲音,相信大家和小編一樣的心情,看這個(gè)東西有點(diǎn)高大上,但嘗試去閱讀Docker文...

    Bryan 評論0 收藏0
  • 使用 Docker 搭建簡易的 Java Web 環(huán)境 (二)

    摘要:創(chuàng)建一個(gè)環(huán)境最近公司正在使用開發(fā)網(wǎng)站應(yīng)用,所以有必要了解下如何使用創(chuàng)建對應(yīng)的環(huán)境。還好,提供了文檔的形式來組合多個(gè)容器來搭建開發(fā)環(huán)境。下一步我們將使用來構(gòu)建更加復(fù)雜的開發(fā)環(huán)境。 showImg(https://segmentfault.com/img/remote/1460000011106825); 從《從最簡單的入手學(xué)習(xí) Docker (一)》一文中,可以簡單的了解 Docker ...

    Tamic 評論0 收藏0
  • 使用 Docker 搭建前端 Java 開發(fā)環(huán)境

    摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。 這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都...

    microelec 評論0 收藏0
  • 使用 Docker 搭建前端 Java 開發(fā)環(huán)境

    摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。 這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都...

    go4it 評論0 收藏0
  • 使用 Docker 搭建前端 Java 開發(fā)環(huán)境

    摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。 這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都...

    dreamGong 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<