1. 程式人生 > >centos 中使用 Docker 搭建 Java Web 執行環境

centos 中使用 Docker 搭建 Java Web 執行環境

這裡,我按照我的環境來記錄下我的安裝過程。

作業系統:win10

虛擬機器:vmware12

linux版本:CentOS-6.6-x86_64-minimal  (這是沒有介面的版本)

安裝基礎環境

升級我的linux核心,他必須要核心3.8以上,而且要是64位的系統。

用下面的命令檢視linux核心的版本

uname -r

我的核心預設是


可通過以下命令安裝最新核心:

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命令重啟作業系統。

再次檢視核心,顯示為 


升級到了3.10

安裝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 了。

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

service docker start

下載映象

就像曾經安裝軟體一樣,我們首先需要有一張刻錄了該軟體的光碟,如果您使用的是虛擬光碟機,那麼就需要執行一種名為“映象”的檔案,通過它來安裝軟體。在 Docker 的世界裡,也有一個名為“映象”的東西,已經安裝我們所需的作業系統,我們一般成為“Docker 映象”,本文簡稱“映象”。

那麼問題來了,我們從哪裡下載映象呢?

一個是docker的官網 http://www.docker.com/ 當然這個是國外的啦,下載起來很慢的。所以我推薦一個國內的(當然國內不止這一個)道客船長

下面就在道客船長上面下載映象。

進入網站,然後去映象倉庫找自己想要的映象

我選擇centos6.6,拉取命令如下

docker pull daocloud.io/library/centos:6.6

使用如下命令,檢視本地所以的映象
docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
daocloud.io/library/centos      6.6                 12c9d795d85a        9 weeks ago         202.6 MB

如果看到以上輸出,說明您可以使用“daocloud.io/library/centos”這個映象了,或將其稱為倉庫(Repository),該映象有一個名為“6.6”的標籤(Tag),此外還有一個名為“12c9d795d85a”的映象 ID(可能您所看到的映象 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該映象只有 202.6 MB,非常小巧,而不像虛擬機器的映象檔案那樣龐大。

現在映象已經有了,我們下面就需要使用該映象,來啟動容器。

啟動容器

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

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

docker run -i -t -v /root/software/:/mnt/software/ 12c9d795d85a /bin/bash

看到這樣的情況,說明我們現在已經登入到容器中了。

我們來看下上一條命令的大概意思

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

其中,相關引數包括:

  • -i:表示以“互動模式”執行容器
  • -t:表示容器啟動後會進入其命令列
  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

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

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

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

安裝相關軟體

我們先進入 /opt目錄
cd opt
預設將軟體安裝到這裡 安裝jdk1.8 使用wget命令下載,在這以前我們需要先安裝下wget命令
yum install wget -y
下載jdk1.8 因為oracle現在要同意協議才能下載,直接使用wget加連結下載不到,所以要加上前面的那些程式碼
wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.tar.gz
解壓壓縮包 需要先安裝tar 命令,在解壓
yum install tar -y
tar -zxf jdk-8u65-linux-x64.tar.gz

幫目錄改個名,方便後面配環境變數

mv jdk1.8.0_65 jdk

下載tomcat8

wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.30/bin/apache-tomcat-8.0.30.tar.gz
解壓
tar -zxf apache-tomcat-8.0.30.tar.gz 

幫目錄改個名,方便後面配環境變數

mv apache-tomcat-8.0.30 tomcat
設定環境變數
vi ~/.bashrc
在檔案末尾新增如下配置
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
最後,需要使用source命令,讓環境變數生效:
source ~/.bashrc
然後輸入 java 能看到一大堆東西就說明OK了。

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

首先,建立執行指令碼:

vi /root/run.sh
新增如下內容
#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

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

最後,為執行指令碼新增執行許可權:

chmod u+x /root/run.sh
退出容器

說明退出了。
隨後,可使用如下命令檢視正在執行的容器:

docker ps

此時,您應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器:

docker ps -a

輸出如下內容:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
3fb5c3089f22        lzg/javaweb:0.1     "/root/run.sh"      1 minutes ago                                                        javaweb  

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

建立Java Web映象
docker commit 3fb5c3089f22 lzg/javaweb:0.1

該容器的 ID 是“3fb5c3089f22 ”,所建立的映象名是“lzg/javaweb:0.1”,隨後可使用映象來啟動 Java Web 容器。

使用docker images命令 能看到如下內容:

REPOSITORY                   TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
lzg/javaweb             0.1                 fe01b7164bd9        5 seconds ago       823 MB
daocloud.io/library/centos   6.6                 12c9d795d85a        9 weeks ago          202.6 MB

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

docker run -d -p 58080:8080 --name javaweb lzg/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命令來檢視當前正在執行的容器。


然後通過 linux宿主的 ip:58080訪問,就能看到 tomcat的主頁了。

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

如果配置過程中有遇到其他問題,自行百度去解決啦。