docker生成tomcat镜像
應(yīng)用場景
有時(shí)候docker公共鏡像庫中下載下來的鏡像,可能不是自己想要的,沒辦法,自己也可以制作一個(gè)自己想要的鏡像,然后發(fā)布到公共資源鏡像中,也可以保存到私有倉庫中,以防后期自己也需要使用。
操作步驟
試驗(yàn)環(huán)境為:windows7系統(tǒng),內(nèi)存8G,固態(tài)硬盤120G,硬盤450G,ip為192.168.117.66,在windows7系統(tǒng)上,安裝VMware,創(chuàng)建兩個(gè)虛擬機(jī),安裝centos7.1系統(tǒng),兩個(gè)虛擬機(jī)內(nèi)存2G,硬盤30G,ip分別為192.168.199.31(docker1),192.168.199.32(docker2)。
在此試驗(yàn)中,只需要一個(gè)虛擬機(jī)就ok了,在此取192.168.199.32(docker2),在虛擬機(jī)上配置網(wǎng)絡(luò),安裝docker。
1. 下載鏡像
在docker部署tomcat應(yīng)用試驗(yàn)中,需要下載一個(gè)虛擬機(jī)鏡像,可以是ubuntu、centos、redhat,這里選取centos。
先搜索,centos有哪些鏡像:
下載星級(jí)最多排名第一的docker鏡像:
# docker pull docker.io/centos注:如果根據(jù)前面文檔,配置了加速器,命令改為dao pull docker.io/centos,可能會(huì)出現(xiàn)網(wǎng)絡(luò)問題,一次不能成功,多嘗試幾次。 查看下載的鏡像:
# docker images可以看出一個(gè)centos鏡像只有172.3M,完全不像centos虛擬機(jī)有幾個(gè)G,鏡像非常小巧,現(xiàn)在下載完鏡像,可以使用鏡像,啟動(dòng)容器了。此時(shí)記住鏡像ID為ce20c473cd8a。
2. 啟動(dòng)容器
容器是在鏡像的基礎(chǔ)上來運(yùn)行的,一旦容器啟動(dòng)了,我們就可以登錄到容器中,安裝自己所需的軟件或應(yīng)用程序。既然鏡像已經(jīng)下載到本地,那么如何才能啟動(dòng)容器呢?
只需使用以下命令即可啟動(dòng)容器:# docker run -i -t -v /root/software/:/mnt/software/ ce20c473cd8a /bin/bash 這條命令比較長,我們稍微分解一下,其實(shí)包含以下三個(gè)部分:其中,相關(guān)參數(shù)包括:
-i:表示以“交互模式”運(yùn)行容器
-t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行
-v:表示需要將本地哪個(gè)目錄掛載到容器中,格式:-v <宿主機(jī)目錄>:<容器目錄>
假設(shè)我們的所有安裝程序都放在了宿主機(jī)的/root/software/目錄下,現(xiàn)在需要將其掛載到容器的/mnt/software/目錄下。
在這其中掛載,書面的解釋是數(shù)據(jù)卷,通俗的來說就是宿主機(jī)的/root/software/目錄下的文件,文件夾,在容器的/mnt/software/目錄下都能顯示,并且實(shí)時(shí)更新。
需要說明的是,不一定要使用“鏡像 ID”,也可以使用“倉庫名:標(biāo)簽名”,例如:docker.cn/docker/centos:centos,這只是描述一下,這里對(duì)應(yīng)的就是centos。
初始命令表示一旦容器啟動(dòng),需要運(yùn)行的命令,此時(shí)使用“/bin/bash”,表示什么也不做,只需進(jìn)入命令行即可。
3. 安裝相關(guān)軟件
為了搭建 Java Web 運(yùn)行環(huán)境,我們需要安裝 JDK 與 Tomcat,下面的過程均在容器內(nèi)部進(jìn)行。我們不妨選擇/opt/目錄作為安裝軟件的目錄,首先需要通過cd /opt/命令進(jìn)入該目錄。
在安裝之前,我們需要把JDK安裝包和Tomcat安裝包,分別拷貝到虛擬機(jī)的/root/software/目錄下,沒有software文件夾的自行創(chuàng)建。
3.1 安裝 JDK
首先,此時(shí)已在容器的/opt/目錄下,解壓 JDK 程序包:# tar -xzvf /mnt/software/jdk-7u79-linux-x64.tar.gz然后,重命名 JDK 目錄:# mv /mnt/software/jdk1.7.0_79/ jdk/3.2 安裝 Tomcat
首先,解壓 Tomcat 程序包:
把我們的應(yīng)用放到tomcat目錄下的,webapps目錄中。這里,采用了以前本地的一個(gè)應(yīng)用。
3.3 設(shè)置環(huán)境變量
首先,編輯.bashrc文件# vi ~/.bashrc然后,在該文件末尾添加如下配置:export JAVA_HOME=/opt/jdkexport PATH=$PATH:$JAVA_HOME最后,需要使用source命令,讓環(huán)境變量生效:# source ~/.bashrc3.4 編寫運(yùn)行腳本
我們需要編寫一個(gè)運(yùn)行腳本,當(dāng)啟動(dòng)容器時(shí),運(yùn)行該腳本,啟動(dòng) Tomcat,具體過程如下:
首先,創(chuàng)建運(yùn)行腳本:# vi /root/run.sh然后,編輯腳本內(nèi)容如下:#!/bin/bashsource ~/.bashrcsh /opt/tomcat/bin/catalina.sh run注意:這里必須先加載環(huán)境變量,然后使用 Tomcat 的運(yùn)行腳本來啟動(dòng) Tomcat 服務(wù),并且必須采用catalina.sh啟動(dòng),如果用startup.sh啟動(dòng),容器退出后tomcat會(huì)停掉。
最后,為運(yùn)行腳本添加執(zhí)行權(quán)限:# chmod u+x /root/run.sh4. 退出容器
當(dāng)以上步驟全部完成后,可使用exit命令,或者按ctrl+D退出容器。
隨后,可使用如下命令查看正在運(yùn)行的容器:# docker ps此時(shí),您應(yīng)該看不到任何正在運(yùn)行的程序,因?yàn)閯偛乓呀?jīng)使用exit命令退出的容器,此時(shí)容器處于停止?fàn)顟B(tài),可使用如下命令查看所有容器:# docker ps -a輸出如下內(nèi)容:
記住以上CONTAINER ID(容器 ID),隨后我們將通過該容器,創(chuàng)建一個(gè)可運(yùn)行 Java Web 的鏡像。從上圖中可以看出,此處容器ID為b4856714dc81。
5. 創(chuàng)建Java Web鏡像
使用以下命令,根據(jù)某個(gè)“容器 ID”來創(chuàng)建一個(gè)新的“鏡像”:# docker commit b4856714dc81 xubin/javaweb:03該容器的 ID 是“b4856714dc81”,所創(chuàng)建的鏡像名是“xubin/javaweb:03”,隨后可使用鏡像來啟動(dòng) Java Web 容器。
6. 啟動(dòng)Java Web容器
可以使用docker images命令,查看當(dāng)前所有的鏡像,此時(shí)可以看到最新創(chuàng)建的鏡像“xubin/javaweb:03”,當(dāng)然也可以觀察它的鏡像ID。正如上面所描述的那樣,我們可以通過“鏡像名”或“鏡像 ID”來啟動(dòng)容器,與上次啟動(dòng)容器不同的是,我們現(xiàn)在不再進(jìn)入容器的命令行,而是直接啟動(dòng)容器內(nèi)部的 Tomcat 服務(wù)。此時(shí),需要使用以下命令:
# docker run -d -p 8083:8080 --name javaweb3 xubin/javaweb:03 /root/run.sh 稍作解釋:-p:表示宿主機(jī)與容器的端口映射,此時(shí)將容器內(nèi)部的 8080 端口映射為宿主機(jī)的 8083 端口,這樣就向外界暴露了 8083 端口,可通過 Docker 網(wǎng)橋來訪問容器內(nèi)部的 8080 端口了。
–name:表示容器名稱,用一個(gè)有意義的名稱命名即可。
關(guān)于 Docker 網(wǎng)橋的內(nèi)容,需要補(bǔ)充說明一下。實(shí)際上 Docker 在宿主機(jī)與容器之間,搭建了一座網(wǎng)絡(luò)通信的橋梁,我們可通過宿主機(jī) IP 地址與端口號(hào)來映射容器內(nèi)部的 IP 地址與端口號(hào),
在一系列參數(shù)后面的是“鏡像名”或“鏡像 ID”,怎么方便就怎么來。最后是“初始命令”,它是上面編寫的運(yùn)行腳本,里面封裝了加載環(huán)境變量并啟動(dòng) Tomcat 服務(wù)的命令。
當(dāng)運(yùn)行以上命令后,會(huì)立即輸出一長串“容器 ID”,我們可通過docker ps命令來查看當(dāng)前正在運(yùn)行的容器。如下如所示:
在瀏覽器中,輸入以下地址,即可訪問應(yīng)用:
http://192.168.199.32:8083/BBS/article.jsp/ 注意:這里使用的是宿主機(jī)的 IP
地址,與對(duì)外暴露的端口號(hào) 8083,它映射容器內(nèi)部的端口號(hào) 8080。
總結(jié)
以上是生活随笔為你收集整理的docker生成tomcat镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对 makefile 中 $*和静态模式
- 下一篇: 重命名和移动