使用 Docker 搭建 Tomcat 運行環境

轉自: http://m.oschina.net/blog/616526, 版權歸原做者全部。html

 

1 Docker與虛擬機java

   

2 搭建過程web

2.1 準備宿主系統docker

準備一個 CentOS 7操做系統,具體要求以下:shell

  • 必須是 64 位操做系統apache

  • 建議內核在 3.8 以上centos

經過如下命令查看您的 CentOS 內核:瀏覽器

# uname -r

2.2 安裝Dockertomcat

# yum install docker

可以使用如下命令,查看 Docker 是否安裝成功:bash

# docker version

若輸出了 Docker 的版本號,則說明安裝成功了,可經過如下命令啓動 Docker 服務:

# systemctl start  docker.service

一旦 Docker 服務啓動完畢,就能夠開始使用 Docker 了。

2.3 下載鏡像

以 CentOS 爲例,下載一個 CentOS 的鏡像:

# docker pull centos:7.2.1511

下載完成後,使用命令查看本地鏡像列表:

# docker images
REPOSITORY        TAG        IMAGE ID      CREATED      VIRTUAL SIZE
docker.io/centos  7.2.1511   83ee614b834e  9 weeks ago  194.6 MB

2.4 啓動容器

容器是在鏡像的基礎上來運行的,一旦容器啓動了,咱們就能夠登陸到容器中,安裝本身所需的軟件或應用程序。

使用如下命令便可啓動容器:

# docker run -i -t -v /root/software/:/mnt/software/ 83ee /bin/bash

命令包含如下三個部分:

docker run <相關參數> <鏡像 ID> <初始命令>

其中,相關參數包括:

  • -i:表示以「交互模式」運行容器

  • -t:表示容器啓動後會進入其命令行

  • -v:表示須要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

本例中,全部安裝程序都放在了宿主機的/root/software/目錄下,如今須要將其掛載到容器的/mnt/software/目錄下。

# pwd
/root/software

# ls
apache-tomcat-7.0.67.tar.gz  jdk1.7.0_79.tar.gz

初始命令表示一旦容器啓動,須要運行的命令,此時使用「/bin/bash」,表示啓動後直接進入bash shell。

2.5 安裝軟件

爲了搭建 Java Web 運行環境,須要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。本例中,選擇/opt/目錄做爲安裝目錄,首先須要經過cd /opt/命令進入該目錄。

2.5.1 安裝JDK

首先,解壓 JDK 程序包:

# tar -zxf /mnt/software/jdk1.7.0_79.tar.gz -C .

而後,移動 JDK 目錄:

# mv jdk1.7.0_79/ /opt/jdk/

2.5.2 安裝Tomcat

首先,解壓Tomcat程序包:

# tar -zxf /mnt/software/apache-tomcat-7.0.67.tar.gz -C .

而後,移動Tomcat目錄:

# mv apache-tomcat-7.0.67/ /opt/tomcat/

2.5.3 編寫運行腳本

編寫一個運行腳本,當啓動容器時,運行該腳本,啓動 Tomcat。

首先,建立運行腳本:

# touch /root/run.sh

# vi /root/run.sh

而後,編輯腳本內容以下:

#!/bin/bash

export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH

sh /opt/tomcat/bin/catalina.sh run

最後,爲運行腳本添加執行權限:

# chmod u+x /root/run.sh

2.6 退出容器

當以上步驟所有完成後,可以使用exit命令,退出容器。

隨後,可以使用以下命令查看正在運行的容器:

# docker ps

此時,應該看不到任何正在運行的程序,由於剛纔已經使用exit命令退出的容器,此時容器處於中止狀態,可以使用以下命令查看全部容器:

# docker ps -a
CONTAINER ID  IMAGE  COMMAND     CREATED         STATUS                  
02bebc3f546a  83ee   "/bin/bash" 12 minutes ago  Exited (0) 7 seconds ago

記住以上CONTAINER ID(容器 ID),隨後將經過該容器,建立一個可運行 Tomcat 鏡像。

2.7 建立Tomcat鏡像

使用如下命令,根據某個「容器 ID」來建立一個新的「鏡像」:

# docker commit 02be mytomcat:1.0
65c88ec597e04812ec3b06b7749578bebcae3aa3d735b565ed25db6818d9d7f3

# docker images
REPOSITORY        TAG       IMAGE ID      CREATED             VIRTUAL SIZE
mytomcat          1.0       65c88ec597e0  About a minute ago  514.4 MB
docker.io/centos  7.2.1511  83ee614b834e  9 weeks ago         194.6 MB

該容器的ID是02be,所建立的鏡像名是「mytomcat:1.0」,隨後可以使用鏡像來啓動Tomcat容器。

2.8 啓動Tomcat容器

首先,新建/root/webapps/ROOT目錄,並在該目錄下建立一個index.html文件,文件內容以下:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

正如上面所描述的那樣,能夠經過「鏡像名」或「鏡像 ID」來啓動容器,與上次啓動容器不一樣的是,如今再也不進入容器的命令行,而是直接啓動容器內部的 Tomcat 服務。此時,須要使用如下命令:

# docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh

 

其中,相關參數包括:

  • -d:表示以「守護模式」執行/root/run.sh腳本,此時 Tomcat 控制檯不會出如今輸出終端上。

  • -p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可經過 Docker 網橋來訪問容器內部的 8080 端口了。

  • -v:表示須要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

  • --name:表示容器名稱,用一個有意義的名稱命名便可。

在瀏覽器中,輸入宿主IP和端口號,便可訪問 Tomcat:

2.9 最終示意圖:

2.10 中止Tomcat容器

# docker ps -a
CONTAINER ID  IMAGE         COMMAND         CREATED         STATUS        
f23598b6544d  mytomcat:1.0  "/root/run.sh"  6 minutes ago   Up 6 minutes  

# docker stop f235

2.11 移除容器

# docker ps -a
CONTAINER ID  IMAGE         COMMAND         CREATED        STATUS                         
f23598b6544d  mytomcat:1.0  "/root/run.sh"  8 minutes ago  Exited (137)

# docker rm f235
f235

# docker ps -a
CONTAINER ID  IMAGE         COMMAND         CREATED        STATUS

2.12 移除鏡像

# docker images
REPOSITORY          TAG        IMAGE ID       CREATED         VIRTUAL SIZE
mytomcat            1.0        65c88ec597e0   31 minutes ago  514.4 MB
docker.io/centos    7.2.1511   83ee614b834e   9 weeks ago     194.6 MB

# docker rmi 65c8
Untagged: mytomcat:1.0
Deleted: 65c88ec597e04812ec3b06b7749578bebcae3aa3d735b565ed25db6818d9d7f3

# docker images
REPOSITORY          TAG        IMAGE ID       CREATED         VIRTUAL SIZE
docker.io/centos    7.2.1511   83ee614b834e   9 weeks ago     194.6 MB

 

 

 

PS:本文參考了大神博文:http://my.oschina.net/huangyong/blog/372491?fromerr=kHrZPM01,並在原文基礎上,進行了部分添加修改。

相關文章
相關標籤/搜索