Docker : Java+Tomcat環境搭建
阿新 • • 發佈:2019-01-03
DockerJava+Tomcat環境搭建 軟體環境:jdk、tomcat、docker、centos、虛擬機器
首先,您要準備一個 CentOS 的作業系統,虛擬機器也行。總之,可以通過 Linux 客戶端工具訪問到 CentOS 作業系統就行。
需要說明的是,Ubuntu 或其它 Linux 作業系統也能玩 Docker,只不過本文選擇了以 CentOS 為例,僅此而已。
CentOS 具體要求如下:
必須是 64 位作業系統 建議核心在 3.8 以上
通過以下命令檢視您的 CentOS 核心:
如果執行以上命令後,輸出的核心版本號低於 3.8,請參考下面的方法來來升級您的 Linux 核心。
對於 CentOS 6.5 而言,核心版本預設是 2.6。首先,可通過以下命令安裝最新核心:
隨後,編輯以下配置檔案:
將default=1修改為default=0。
最後,通過reboot命令重啟作業系統獲取【下載地址】 。
重啟後如果不出意外的話,再次檢視核心,您的 CentOS 核心將會顯示為 3.10。
如果到這裡,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 Docker 了。
安裝 Docker
只需通過以下命令即可安裝 Docker 軟體:
可使用以下命令,檢視 Docker 是否安裝成功:
若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:
一旦 Docker 服務啟動完畢,我們下面就可以開始使用 Docker 了。
做法
就像曾經安裝軟體一樣,我們首先需要有一張刻錄了該軟體的光碟,如果您使用的是虛擬光碟機,那麼就需要執行一種名為“映象”的檔案,通過它來安裝軟體。在 Docker 的世界裡,也有一個名為“映象”的東西,已經安裝我們所需的作業系統,我們一般成為“Docker 映象”,本文簡稱“映象”。
那麼問題來了,我們從哪裡下載映象呢?
Docker 官網 確實已經提供了所有的映象下載地址,可惜在國內卻是無法訪問的。幸好國內好心人提供了一個 Docker 中文網,在該網站上可以下載我們所需的 Docker 映象。
下載映象
我們不妨還是以 CentOS 為例,通過以下步驟,下載一個 CentOS 的映象。
首先,訪問 Docker 中文網,在首頁中搜索名為“centos”的映象,在搜尋的結果中,有一個“官方映象”,它就是我們所需的。
然後,進入 CentOS 官方映象頁面,在“Pull this repository”輸入框中,有一段命令,把它複製下來,在自己的命令列上執行該命令,隨後將立即下載該映象。
最後,使用以下命令檢視本地所有的映象:獲取【下載地址】
當下載完成後,您應該會看到:
如果看到以上輸出,說明您可以使用“docker.cn/docker/centos”這個映象了,或將其稱為倉庫(Repository),該映象有一個名為“centos6”的標籤(Tag),此外還有一個名為“25c5298b1a36 ”的映象 ID(可能您所看到的映象 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該映象只有 215.8 MB,非常小巧,而不像虛擬機器的映象檔案那樣龐大。
現在映象已經有了,我們下面就需要使用該映象,來啟動容器。
啟動容器
容器是在映象的基礎上來執行的,一旦容器啟動了,我們就可以登入到容器中,安裝自己所需的軟體或應用程式。既然映象已經下載到本地,那麼如何才能啟動容器呢?
只需使用以下命令即可啟動容器:
這條命令比較長,我們稍微分解一下,其實包含以下三個部分:
其中,相關引數包括:
-i:表示以“互動模式”執行容器 -t:表示容器啟動後會進入其命令列 -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
假設我們的所有安裝程式都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
需要說明的是,不一定要使用“映象 ID”,也可以使用“倉庫名:標籤名”,例如:docker.cn/docker/centos:centos6。
初始命令表示一旦容器啟動,需要執行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令列即可。
安裝相關軟體
為了搭建 Java Web 執行環境,我們需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。我們不妨選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。
安裝 JDK
首先,解壓 JDK 程式包:
然後,重新命名 JDK 目錄:
安裝 Tomcat
首先,解壓 Tomcat 程式包:
然後,重新命名 Tomcat 目錄:
設定環境變數
首先,編輯.bashrc檔案
然後,在該檔案末尾新增如下配置:
最後,需要使用source命令,讓環境變數生效:
編寫執行指令碼
我們需要編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat,具體過程如下:
首先,建立執行指令碼:
然後,編輯指令碼內容如下:
注意:這裡必須先載入環境變數,然後使用 Tomcat 的執行指令碼來啟動 Tomcat 服務。
最後,為執行指令碼新增執行許可權:
退出容器
當以上步驟全部完成後,可使用exit命令,退出容器。
隨後,可使用如下命令檢視正在執行的容器:
此時,您應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器:
輸出如下內容:
記住以上CONTAINER ID(容器 ID),隨後我們將通過該容器,建立一個可執行 Java Web 的映象。
建立 Java Web 映象
使用以下命令,根據某個“容器 ID”來建立一個新的“映象”:
該容器的 ID 是“57c312bbaad1”,所建立的映象名是“huangyong/javaweb:0.1”,隨後可使用映象來啟動 Java Web 容器。
啟動 Java Web 容器
有必要首先使用docker images命令,檢視當前所有的映象:
可見,此時已經看到了最新建立的映象“huangyong/javaweb:0.1”,其映象 ID 是“fc826a4706af”。正如上面所描述的那樣,我們可以通過“映象名”或“映象 ID”來啟動容器,與上次啟動容器不同的是,我們現在不再進入容器的命令列,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:
稍作解釋:
-d:表示以“守護模式”執行/root/run.sh指令碼,此時 Tomcat 控制檯不會出現在輸出終端上。 -p:表示宿主機與容器的埠對映,此時將容器內部的 8080 埠對映為宿主機的 58080 埠,這樣就向外界暴露了 58080 埠,可通過 Docker 網橋來訪問容器內部的 8080 埠了。 --name:表示容器名稱,用一個有意義的名稱命名即可。
關於 Docker 網橋的內容,需要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網路通訊的橋樑,我們可通過宿主機 IP 地址與埠號來對映容器內部的 IP 地址與埠號,
在一系列引數後面的是“映象名”或“映象 ID”,怎麼方便就怎麼來。最後是“初始命令”,它是上面編寫的執行指令碼,裡面封裝了載入環境變數並啟動 Tomcat 服務的命令。
當執行以上命令後,會立即輸出一長串“容器 ID”,我們可通過docker ps命令來檢視當前正在執行的容器。
品嚐
在瀏覽器中,輸入以下地址,即可訪問 Tomcat 首頁:
注意:這裡使用的是宿主機的 IP 地址,與對外暴露的埠號 58080,它對映容器內部的埠號 8080。
總結
通過本文,我們瞭解了 Docker 是什麼?它與虛擬機器的差別在哪裡?以及如何安裝 Docker?如何下載 Docker 映象?如何執行 Docker 容器?如何在容器內安裝應用程式?如何在容器上建立映象?如何以服務的方式啟動容器?這一切看似簡單,但操作也是相當繁瑣的,不過熟能生巧,需要我們不斷地操練。
首先,您要準備一個 CentOS 的作業系統,虛擬機器也行。總之,可以通過 Linux 客戶端工具訪問到 CentOS 作業系統就行。
需要說明的是,Ubuntu 或其它 Linux 作業系統也能玩 Docker,只不過本文選擇了以 CentOS 為例,僅此而已。
CentOS 具體要求如下:
必須是 64 位作業系統 建議核心在 3.8 以上
通過以下命令檢視您的 CentOS 核心:
uname -r
如果執行以上命令後,輸出的核心版本號低於 3.8,請參考下面的方法來來升級您的 Linux 核心。
對於 CentOS 6.5 而言,核心版本預設是 2.6。首先,可通過以下命令安裝最新核心:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm yum -y --enablerepo=elrepo-kernel install kernel-lt
隨後,編輯以下配置檔案:
vi /etc/grub.conf
將default=1修改為default=0。
最後,通過reboot命令重啟作業系統獲取【下載地址】 。
重啟後如果不出意外的話,再次檢視核心,您的 CentOS 核心將會顯示為 3.10。
如果到這裡,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 Docker 了。
安裝 Docker
只需通過以下命令即可安裝 Docker 軟體:
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm yum -y install docker-io
可使用以下命令,檢視 Docker 是否安裝成功:
docker version
若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:
service docker start
一旦 Docker 服務啟動完畢,我們下面就可以開始使用 Docker 了。
做法
就像曾經安裝軟體一樣,我們首先需要有一張刻錄了該軟體的光碟,如果您使用的是虛擬光碟機,那麼就需要執行一種名為“映象”的檔案,通過它來安裝軟體。在 Docker 的世界裡,也有一個名為“映象”的東西,已經安裝我們所需的作業系統,我們一般成為“Docker 映象”,本文簡稱“映象”。
那麼問題來了,我們從哪裡下載映象呢?
Docker 官網 確實已經提供了所有的映象下載地址,可惜在國內卻是無法訪問的。幸好國內好心人提供了一個 Docker 中文網,在該網站上可以下載我們所需的 Docker 映象。
下載映象
我們不妨還是以 CentOS 為例,通過以下步驟,下載一個 CentOS 的映象。
首先,訪問 Docker 中文網,在首頁中搜索名為“centos”的映象,在搜尋的結果中,有一個“官方映象”,它就是我們所需的。
然後,進入 CentOS 官方映象頁面,在“Pull this repository”輸入框中,有一段命令,把它複製下來,在自己的命令列上執行該命令,隨後將立即下載該映象。
最後,使用以下命令檢視本地所有的映象:獲取【下載地址】
docker images
當下載完成後,您應該會看到:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 MB
如果看到以上輸出,說明您可以使用“docker.cn/docker/centos”這個映象了,或將其稱為倉庫(Repository),該映象有一個名為“centos6”的標籤(Tag),此外還有一個名為“25c5298b1a36 ”的映象 ID(可能您所看到的映象 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該映象只有 215.8 MB,非常小巧,而不像虛擬機器的映象檔案那樣龐大。
現在映象已經有了,我們下面就需要使用該映象,來啟動容器。
啟動容器
容器是在映象的基礎上來執行的,一旦容器啟動了,我們就可以登入到容器中,安裝自己所需的軟體或應用程式。既然映象已經下載到本地,那麼如何才能啟動容器呢?
只需使用以下命令即可啟動容器:
docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
這條命令比較長,我們稍微分解一下,其實包含以下三個部分:
docker run <相關引數> <映象 ID> <初始命令>
其中,相關引數包括:
-i:表示以“互動模式”執行容器 -t:表示容器啟動後會進入其命令列 -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
假設我們的所有安裝程式都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
需要說明的是,不一定要使用“映象 ID”,也可以使用“倉庫名:標籤名”,例如:docker.cn/docker/centos:centos6。
初始命令表示一旦容器啟動,需要執行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令列即可。
安裝相關軟體
為了搭建 Java Web 執行環境,我們需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。我們不妨選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。
安裝 JDK
首先,解壓 JDK 程式包:
<1 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-x64.tar.gz" <2 tar -zxf jdk-7u4-linux-x64.tar.gz
然後,重新命名 JDK 目錄:
mv jdk1.7.0_67/ jdk/
安裝 Tomcat
首先,解壓 Tomcat 程式包:
然後,重新命名 Tomcat 目錄:
mv apache-tomcat-7.0.55/ tomcat/
設定環境變數
首先,編輯.bashrc檔案
vi ~/.bashrc
然後,在該檔案末尾新增如下配置:
export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME
最後,需要使用source命令,讓環境變數生效:
source ~/.bashrc
編寫執行指令碼
我們需要編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat,具體過程如下:
首先,建立執行指令碼:
vi /root/run.sh
然後,編輯指令碼內容如下:
#!/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina.sh run
注意:這裡必須先載入環境變數,然後使用 Tomcat 的執行指令碼來啟動 Tomcat 服務。
最後,為執行指令碼新增執行許可權:
chmod u+x /root/run.sh
退出容器
當以上步驟全部完成後,可使用exit命令,退出容器。
隨後,可使用如下命令檢視正在執行的容器:
docker ps
此時,您應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器:
docker ps -a
輸出如下內容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57c312bbaad1 docker.cn/docker/centos:centos6 "/bin/bash" 27 minutes ago Exited (0) 19 seconds ago naughty_goldstine
記住以上CONTAINER ID(容器 ID),隨後我們將通過該容器,建立一個可執行 Java Web 的映象。
建立 Java Web 映象
使用以下命令,根據某個“容器 ID”來建立一個新的“映象”:
docker commit 57c312bbaad1 huangyong/javaweb:0.1
該容器的 ID 是“57c312bbaad1”,所建立的映象名是“huangyong/javaweb:0.1”,隨後可使用映象來啟動 Java Web 容器。
啟動 Java Web 容器
有必要首先使用docker images命令,檢視當前所有的映象:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE huangyong/javaweb 0.1 fc826a4706af 38 seconds ago 562.8 MB docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 MB
可見,此時已經看到了最新建立的映象“huangyong/javaweb:0.1”,其映象 ID 是“fc826a4706af”。正如上面所描述的那樣,我們可以通過“映象名”或“映象 ID”來啟動容器,與上次啟動容器不同的是,我們現在不再進入容器的命令列,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:
docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
稍作解釋:
-d:表示以“守護模式”執行/root/run.sh指令碼,此時 Tomcat 控制檯不會出現在輸出終端上。 -p:表示宿主機與容器的埠對映,此時將容器內部的 8080 埠對映為宿主機的 58080 埠,這樣就向外界暴露了 58080 埠,可通過 Docker 網橋來訪問容器內部的 8080 埠了。 --name:表示容器名稱,用一個有意義的名稱命名即可。
關於 Docker 網橋的內容,需要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網路通訊的橋樑,我們可通過宿主機 IP 地址與埠號來對映容器內部的 IP 地址與埠號,
在一系列引數後面的是“映象名”或“映象 ID”,怎麼方便就怎麼來。最後是“初始命令”,它是上面編寫的執行指令碼,裡面封裝了載入環境變數並啟動 Tomcat 服務的命令。
當執行以上命令後,會立即輸出一長串“容器 ID”,我們可通過docker ps命令來檢視當前正在執行的容器。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82f47923f926 huangyong/javaweb:0.1 "/root/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:58080->8080/tcp javaweb
品嚐
在瀏覽器中,輸入以下地址,即可訪問 Tomcat 首頁:
http://192.168.65.132:58080/
注意:這裡使用的是宿主機的 IP 地址,與對外暴露的埠號 58080,它對映容器內部的埠號 8080。
總結
通過本文,我們瞭解了 Docker 是什麼?它與虛擬機器的差別在哪裡?以及如何安裝 Docker?如何下載 Docker 映象?如何執行 Docker 容器?如何在容器內安裝應用程式?如何在容器上建立映象?如何以服務的方式啟動容器?這一切看似簡單,但操作也是相當繁瑣的,不過熟能生巧,需要我們不斷地操練。
除了這種手工生成 Docker 映象的方式以外,還有一種更像是寫程式碼一樣,可以自動地建立 Docker 映象的方式。只需要我們編寫一個 Dockerfile 檔案,隨後使用docker build命令即可完成以上所有的手工操作。