1. 程式人生 > >Docker部署JavaWeb專案實戰

Docker部署JavaWeb專案實戰

摘要:本文主要講了如何在Ubuntu14.04 64位系統下來建立一個執行Java web應用程式的Docker容器。

一、下載映象、啟動容器

1、下載映象

先檢視映象

docker images

記住這個Image ID,下面我們啟動容器需要用到它。 如果看到以上輸出,說明您可以使用“oursuer/ubuntu”這個映象了,或將其稱為倉庫(Repository),該映象有一個名為“14.04”的標籤(Tag),此外還有一個名為 1f879014f4d2 的映象 ID(可能您所看到的映象 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該映象只有188.4 MB,非常小巧,而不像虛擬機器的映象檔案那樣龐大。 現在映象已經有了,我們下面就需要使用該映象,來啟動容器。

2、啟動容器 容器是在映象的基礎上來執行的,一旦容器啟動了,我們就可以登入到容器中,安裝自己所需的軟體或應用程式。既然映象已經下載到本地,那麼如何才能啟動容器呢? 只需使用以下命令即可啟動容器:

docker run -i -t -v /download/:/mnt/software/ 1f879014f4d2 /bin/bash

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

docker run <相關引數> <映象 ID> <初始命令>

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

  1. 其中,相關引數包括:

  2. -i:表示以“互動模式”執行容器

  3. -t:表示容器啟動後會進入其命令列

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

假設我們的所有安裝程式都放在了宿主機的/download/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。 需要說明的是,不一定要使用“映象 ID”,也可以使用“倉庫名:標籤名”,例如:oursuer/ubuntu:14.04。 初始命令表示一旦容器啟動,需要執行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令列即可。

退出容器使用Ctrl+d或輸入exit

如果退出容器後,可以再次使用命令(注意,得先執行docker run之後然後被stop掉的容器才可以使用如下命令)

docker start 容器ID

其中容器ID。使用命令docker ps -a來看,如下:

然後再次啟動已啟動過但現在是關閉的容器

docker start sick_mestorf

這個命令只會啟動容器,不會進入容器。要進入容器得用命令

docker attach 容器ID或容器名

如下:

二、安裝相關軟體

首先先將JDK和tomcat的安裝包.gz檔案放在外面的/download資料夾下

然後再次啟動容器。進入容器

然後看看是否有安裝包。發現兩個都在了,下面可以安裝了

1、JDK安裝

直接使用

  1. cd /usr

  2. mkdir java

  3. cd java

  4. mkdir jdk

  5. cd /mnt/software/

  6. tar zxvf jdk-8u65-linux-x64.gz -C /usr/java/jdk

這裡直接接檔案解壓到/usr/java/jdk目錄,如下

配置環境變數 輸入:

vi /etc/profile

或 新增如下內容:

  1. #set java environment

  2. export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65

  3. export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre

  4. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

  5. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

  

注意此處改成對應的jdk的目錄,並且要以root使用者來做修改,否則無法儲存 儲存後執行:

source /etc/profile 

驗證安裝: 輸入:

java -version 

如果出現如下內容,說明安裝成功

2、tomcat安裝

直接解壓

  1. cd /usr/java

  2. mkdir tomcat

  3. tar zxvf -C /usr/java/tomcat

配置環境 進入到上面的tomcat的bin資料夾下:

開啟

vi setclasspath.sh

gedit setclasspath.sh

新增如下內容:

  1. export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65

  2. export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre

儲存即可。

然後退回到bin目錄下:

執行:

 ./startup.sh

說明tomcat啟動成功

或者使用如下命令檢視:

三、配置容器啟動環境變數

(上面的JDK配置環境變數可以不要,但是這裡的一定要寫!!!!!!!!!!因為這裡是設定容器啟動時載入的環境變數)

1、設定環境變數 首先,編輯.bashrc檔案

vi ~/.bashrc

然後,在該檔案末尾新增如下配置:

  1. export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65

  2. export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre

  3. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

  4. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

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

source ~/.bashrc

2、編寫執行指令碼

我們需要編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat,具體過程如下: 首先,建立執行指令碼:

vi /root/run.sh

然後,編輯指令碼內容如下:

  1. #!/bin/bash

  2. source ~/.bashrc

  3. sh /usr/java/tomcat/apache-tomcat-7.0.68/bin/catalina.sh run

注意:這裡必須先載入環境變數,然後使用 Tomcat 的執行指令碼來啟動 Tomcat 服務。 最後,為執行指令碼新增執行許可權:

chmod u+x /root/run.sh

3、退出容器 當以上步驟全部完成後,可使用exit或ctrl+d命令,退出容器。 隨後,可使用如下命令檢視正在執行的容器: docker ps 此時,您應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器: docker ps -a 輸出如下內容:

記住以上CONTAINER ID(容器 ID),隨後我們將通過該容器,建立一個可執行 Java Web 的映象。

四、建立 Java Web 映象

使用以下命令,根據某個“容器 ID”來建立一個新的“映象”:

docker commit 89a47b5b749e  lin_javaweb:0.1

該容器的 ID 是“89a47b5b749e”,所建立的映象名是“lin_javaweb:0.1”,隨後可使用映象來啟動 Java Web 容器。

這是建立成功後

同樣可以檢視下映象

五、啟動 Java Web 容器

有必要首先使用docker images命令,檢視當前所有的映象:

可見,此時已經看到了最新建立的映象“lin_javaweb:0.1”,其映象 ID 是“4487bd38df06”。正如上面所描述的那樣,我們可以通過“映象名”或“映象 ID”來啟動容器,與上次啟動容器不同的是,我們現在不再進入容器的命令列,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:

docker run -d -p 58080:8080 --name javaweb lin_javaweb:0.1 /root/run.sh

稍作解釋:

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

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

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

關於 Docker 網橋的內容,需要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網路通訊的橋樑,我們可通過宿主機 IP 地址與埠號來對映容器內部的 IP 地址與埠號, 在一系列引數後面的是“映象名”或“映象 ID”,怎麼方便就怎麼來。最後是“初始命令”,它是上面編寫的執行指令碼,裡面封裝了載入環境變數並啟動 Tomcat 服務的命令。 當執行以上命令後,會立即輸出一長串“容器 ID”,我們可通過docker ps命令來檢視當前正在執行的容器。

在瀏覽器中,輸入以下地址,即可訪問 Tomcat 首頁: http://127.0.0.1:58080/

或者

http://localhost:58080/ 注意:這裡使用的是宿主機的 IP 地址,與對外暴露的埠號 58080,它對映容器內部的埠號 8080。

--------------------- 本文來自 Evankaka 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/Evankaka/article/details/50722788?utm_source=copy