【現(xiàn)學(xué)現(xiàn)忘Docker基礎(chǔ)】— 16.練習(xí):Docker安裝Tomcat

步驟1:搜索鏡像

使用docker search命令進(jìn)行搜索。


建議大家去Docker官方鏡像倉(cāng)庫(kù)去搜索,地址https://hub.docker.com/,可以看到詳細(xì)的幫助文檔,和鏡像的倉(cāng)庫(kù)源所支持的版本。

步驟2:下載Tomcat鏡像

使用docker pull命令,從Docker鏡像庫(kù)中拉取鏡像。

[root@192 ~]# docker pull tomcat:9.0
9.0: Pulling from library/tomcat
b9a857cbf04d: Pull complete 
d557ee20540b: Pull complete 
3b9ca4f00c2e: Pull complete 
667fd949ed93: Pull complete 
661d3b55f657: Pull complete 
511ef4338a0b: Pull complete 
a56db448fefe: Pull complete 
00612a99c7dc: Pull complete 
326f9601c512: Pull complete 
c547db74f1e1: Pull complete 
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:9.0
docker.io/library/tomcat:9.0

[root@192 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
tomcat       9.0       040bdb29ab37   2 months ago   649MB
nginx        latest    f6d0b4767a6c   2 months ago   133MB
centos       latest    300e315adb2f   3 months ago   209MB

步驟3:運(yùn)行Tomcat鏡像

執(zhí)行命令:docker run -d --name tomcat-01 -p 9999:8080 040bdb29ab37,啟動(dòng)Tomcat鏡像。

-d:后臺(tái)運(yùn)行容器。
--name:給容器命名。
-p 宿主機(jī)端口:容器內(nèi)部端口:配置Docker容器端口暴露,使外界能夠訪(fǎng)問(wèn)Docker容器內(nèi)部。通過(guò)宿主機(jī)的9999端口就可以訪(fǎng)問(wèn)容器的8080端口的服務(wù)。

(原理看上一個(gè)練習(xí)即可)

# 啟動(dòng)Tomcat鏡像
[root@192 ~]# docker run -d --name tomcat-01 -p 9999:8080 040bdb29ab37
4de54013836c23a53f7b3943403b0543bfc4c390e81bb76f08810289d85813b3

查看宿主機(jī)正在運(yùn)行的容器


步驟4:本機(jī)和外網(wǎng)測(cè)試

進(jìn)行本地訪(fǎng)問(wèn)tomcat容器服務(wù),如下:

[root@192 ~]# curl localhost:9999
<!DOCTYPE html>
<html lang="en">
 <head>
  <title>HTTP Status 404 – Not Found</title>
  <style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style>
 </head>
 <body>
  <h1>HTTP Status 404 – Not Found</h1>
  <hr class="line" />
  <p><b>Type</b> Status Report</p>
  <p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p>
  <hr class="line" />
  <h3>Apache Tomcat/9.0.41</h3>
 </body>
</html>

進(jìn)行外網(wǎng)測(cè)試訪(fǎng)問(wèn)Tomcat容器服務(wù),如下:

我們發(fā)現(xiàn)本機(jī)訪(fǎng)問(wèn)和外網(wǎng)訪(fǎng)問(wèn)Docker容器的Tomcat服務(wù),都是無(wú)法訪(fǎng)問(wèn)到Tomcat服務(wù)的歡迎界面。

原因:阿里云鏡像,默認(rèn)是最小的鏡像,把所有不必要的都剔除掉。所以在Tomcat文件中的webapps目錄中沒(méi)有文件,也就無(wú)法返回歡迎界面了。并不是我們的Tomcat容器無(wú)法接收請(qǐng)求。

因?yàn)榘⒗镌歧R像只保證最小可運(yùn)行的環(huán)境,所以會(huì)出現(xiàn):

  1. Linux命令缺少。
  2. Tomcat文件被精簡(jiǎn)。

下面開(kāi)始解決。

步驟5:解決問(wèn)題

(1)進(jìn)入到正在運(yùn)行的Tomcat容器中

[root@192 ~]# docker exec -it tomcat-01 /bin/bash
root@4de54013836c:/usr/local/tomcat# 

(2)查看Tomcat中的webapps目錄

# 查看Tomcat中的目錄
root@4de54013836c:/usr/local/tomcat# ls -l
total 128
-rw-r--r--. 1 root root 18982 Dec  3 11:48 BUILDING.txt
-rw-r--r--. 1 root root  5409 Dec  3 11:48 CONTRIBUTING.md
-rw-r--r--. 1 root root 57092 Dec  3 11:48 LICENSE
-rw-r--r--. 1 root root  2333 Dec  3 11:48 NOTICE
-rw-r--r--. 1 root root  3257 Dec  3 11:48 README.md
-rw-r--r--. 1 root root  6898 Dec  3 11:48 RELEASE-NOTES
-rw-r--r--. 1 root root 16507 Dec  3 11:48 RUNNING.txt
drwxr-xr-x. 2 root root  4096 Jan 13 08:25 bin
drwxr-xr-x. 1 root root    22 Mar 17 09:22 conf
drwxr-xr-x. 2 root root  4096 Jan 13 08:25 lib
drwxrwxrwx. 1 root root   177 Mar 17 09:22 logs
drwxr-xr-x. 2 root root   134 Jan 13 08:25 native-jni-lib
drwxrwxrwx. 2 root root    30 Jan 13 08:25 temp
drwxr-xr-x. 2 root root     6 Jan 13 08:25 webapps
drwxr-xr-x. 7 root root    81 Dec  3 11:45 webapps.dist
drwxrwxrwx. 2 root root     6 Dec  3 11:43 work

# 查看webapps目錄中的內(nèi)容
root@4de54013836c:/usr/local/tomcat# ls -l webapps
total 0

我們可以看到webapps目錄中沒(méi)有任何文件。

(3)解決問(wèn)題

但是從上面我們可以看到在tomcat中有一個(gè)webapps.dist目錄,而webapps.dist目錄中的內(nèi)容就是我們需要的內(nèi)容,包括歡迎界面等數(shù)據(jù)文件。

我們只需要把webapps.dist目錄中的內(nèi)容,全部拷貝到webapps目錄中即可。

# 查看webapps.dist中的內(nèi)容
root@4de54013836c:/usr/local/tomcat# ls -l webapps.dist/
total 4
drwxr-xr-x.  3 root root  223 Jan 13 08:25 ROOT
drwxr-xr-x. 15 root root 4096 Jan 13 08:25 docs
drwxr-xr-x.  7 root root   99 Jan 13 08:25 examples
drwxr-xr-x.  6 root root   79 Jan 13 08:25 host-manager
drwxr-xr-x.  6 root root  114 Jan 13 08:25 manager

# 把webapps.dist目錄中的內(nèi)容,全部拷貝到webapps目錄中
root@4de54013836c:/usr/local/tomcat# cp -r webapps.dist/* webapps

# 查看webapps目錄中內(nèi)容
root@4de54013836c:/usr/local/tomcat# ls -l webapps
total 4
drwxr-xr-x.  3 root root  223 Mar 17 09:56 ROOT
drwxr-xr-x. 15 root root 4096 Mar 17 09:56 docs
drwxr-xr-x.  7 root root   99 Mar 17 09:56 examples
drwxr-xr-x.  6 root root   79 Mar 17 09:56 host-manager
drwxr-xr-x.  6 root root  114 Mar 17 09:56 manager

這樣我們就可以訪(fǎng)問(wèn)到歡迎界面了,不需要重啟Tomcat服務(wù)。

(4)直接外網(wǎng)訪(fǎng)問(wèn)Docker容器中的Tomcat服務(wù)


如上圖,我們成功看到了Tomcat服務(wù)的歡迎界面。

補(bǔ)充:--rm選項(xiàng)

在看Tomcat鏡像的介紹時(shí)(官方鏡像倉(cāng)庫(kù)網(wǎng)頁(yè)),有如下一條命令。

$ docker run -it --rm tomcat:9.0

說(shuō)明該命令:

  • 如果本地沒(méi)有tomcat9鏡像,會(huì)先從鏡像庫(kù)中下載鏡像到本地宿主機(jī),然后直接啟動(dòng)容器。
  • 當(dāng)容器停止之后,直接刪除本地容器(下載到本地的tomcat9鏡像不會(huì)刪除)。

--rm選項(xiàng)也就是容器停止后,直接在本地刪除該容器,即容器用完即刪,一般測(cè)試的時(shí)候可以用用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容