Docker 搭建Tomcat運行環境

Docker 是一種“輕量級”容器技術,自2014年之後,一時成為了虛擬技術關注的熱點,現在國內已經有越來越多的公司開始逐步使用 Docker 來替換現有的虛擬化平臺了,作為一名 Java 工程師,掌握 Docker 勢在必行!那麼首先我們回顧一下傳統虛擬化技術的體系架構:

Docker 搭建Tomcat運行環境

我們在宿主機的操作系統上,可安裝了多個虛擬機,而在每個虛擬機中,通過虛擬化技術,實現了一個虛擬操作系統,隨後,就可以在該虛擬操作系統上,安裝自己所需的應用程序了。這一切看似非常簡單,但其中的技術細節是相當負載,大神級人物都不一定說得清楚。

凡是使用過虛擬機的工程師,應該都知道,啟動虛擬機就像啟動一臺計算機,初始化過程是相當慢的,我們需要等很久,才能看到登錄界面。一旦虛擬機啟動以後,就可以與宿主機建立網絡連接,確保虛擬機與宿主機之間是互聯互通的。不同的虛擬機之間卻是相互隔離的,也就是說,彼此並不知道對方的存在,但每個虛擬機佔用的都是宿主機的硬件與網絡資源,我們再來對比一下 Docker 技術的體系架構吧

Docker 搭建Tomcat運行環境

可見,在宿主機的操作系統上,有一個 Docker 服務在運行(或者稱為“Docker 引擎”),在此服務上,我們可開啟多個 Docker 容器,而每個 Docker 容器中可運行自己所需的應用程序,Docker 容器之間也是相互隔離的,同樣地,都是佔用的宿主機的硬件與網絡資源。

Docker 容器相對於虛擬機而言,除了在技術實現上完全不一樣以外,啟動速度較虛擬機而言有本質的飛躍,啟動一個容器只在眨眼瞬間。不管是虛擬機還是 Docker 容器,它們都是為了隔離應用程序的運行環境,節省我們的硬件資源,為我們開發人員提供福利。


Docker 搭建Tomcat運行環境

Centos中安裝docker

CentOS 具體要求如下:

1. 必須是 64 位操作系統

2. 建議內核在 3.8 以上

通過以下命令查看您的 CentOS 內核:

<code>uname -r/<code>

如果執行以上命令後,輸出的內核版本號低於 3.8,請參考下面的方法來來升級您的 Linux 內核。

對於 CentOS 6.5 而言,內核版本默認是 2.6。首先,可通過以下命令安裝最新內核:

<code>rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpmyum -y --enablerepo=elrepo-kernel install kernel-lt/<code>
<code>vi /etc/grub.conf/<code>

將default=1修改為default=0

最後,通過reboot命令重啟操作系統。

重啟後如果不出意外的話,再次查看內核,您的 CentOS 內核將會顯示為 3.10。

如果到這裡,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 Docker 了

安裝 Docker

通過以下命令即可安裝 Docker 軟件:

<code>rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmyum -y install docker-io/<code>

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

<code>docker version/<code>

若輸出了 Docker 的版本號,則說明安裝成功,我們下面就可以開始使用 Docker 了。

可通過以下命令啟動 Docker 服務:

<code>service docker start/<code>

下載鏡像

進入 CentOS 官方鏡像頁面,在“Pull this repository”輸入框中,有一段命令,把它複製下來,在自己的命令行上運行該命令,隨後將立即下載該鏡像。

查看本地所有的鏡像

<code>docker images/<code>

當下載完成後,您應該會看到:

<code> CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                     NAMES82f47923f926        huangyong/javaweb:0.1   "/root/run.sh"      4 seconds ago       Up 3 seconds        0.0.0.0:58080->8080/tcp   javaweb/<code>

如果看到以上輸出,說明您可以使用“docker.cn/docker/centos”這個鏡像了,或將其稱為倉庫(Repository),該鏡像有一個名為“centos6”的標籤(Tag),此外還有一個名為“25c5298b1a36 ”的鏡像 ID(可能您所看到的鏡像 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該鏡像只有 215.8 MB,非常小巧,而不像虛擬機的鏡像文件那樣龐大。

啟動容器

容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。既然鏡像已經下載到本地,那麼如何才能啟動容器呢?

只需使用以下命令即可啟動容器:

<code>docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash/<code>

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:

docker run

其中,相關參數包括:

· -i:表示以“交互模式”運行容器

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

· -v:表示需要將本地哪個目錄掛載到容器中,格式:-v :

假設我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。

需要說明的是,不一定要使用“鏡像 ID”,也可以使用“倉庫名:標籤名”,例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器啟動,需要運行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令行即可。

安裝 Tomcat

首先,解壓 Tomcat 程序包:

<code>tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -C ./<code>

然後,重命名 Tomcat 目錄:

<code>mv apache-tomcat-7.0.55/ tomcat//<code>

設置環境變量

<code>vi ~/.bashrc/<code>

然後,在該文件末尾添加如下配置:

<code>export JAVA_HOME=/opt/jdkexport PATH=$PATH:$JAVA_HOME/<code>

最後,需要使用source命令,讓環境變量生效:

<code>source ~/.bashrc/<code>

編寫運行腳本

我們需要編寫一個運行腳本,當啟動容器時,運行該腳本,啟動 Tomcat,具體過程如下:

首先,創建運行腳本:

<code>vi /root/run.sh/<code>
<code>#!/bin/bashsource ~/.bashrcsh /opt/tomcat/bin/catalina.sh run/<code>

注意:這裡必須先加載環境變量,然後使用 Tomcat 的運行腳本來啟動 Tomcat 服務。

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

<code>chmod +x /root/run.sh/<code>

啟動docker中的tomcat即可

<code>docker run -d -p 58080:8080  --name 容器name  /root/run.sh/<code>

解釋:

· -d:表示以“守護模式”執行/root/run.sh腳本,此時 Tomcat 控制檯不會出現在輸出終端上。

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

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


分享到:


相關文章: