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

使用Docker搭建Java Web執行環境

操作環境

  • 伺服器:阿里雲ECS
  • 作業系統:CentOS 7.4 64位

前提條件

  • CentOS具體要求:

    • 必須是 64 位作業系統
    • 建議核心在 3.8 以上
  • 檢視CentOS核心:

    uname -r
    

操作步驟

安裝Docker

新增yum源

 yum install epel-release –y
 yum clean all
 yum list

安裝並執行Docker

yum install docker-io –y
systemctl start docker  #執行docker守護執行緒

檢查安裝結果

docker info / docker version

若輸入Docker版本號,則說明安裝成功

下載映象

以CentOS為例,下載一個CentOS映象

進入DaoCloud映象市場,搜尋centos,進入搜尋詳情頁,能看到拉取映象的命令,在宿主機上執行該命令

docker pull daocloud.io/library/centos:latest

這裡寫圖片描述

下載完成後,檢視本地所有的映象

docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
daocloud.io
/library/centos latest e934aafc2206 4 weeks ago 199 MB

如果看到以上的輸出,說明可以使用“daocloud.io/library/centos”這個映象

啟動容器

啟動容器:

docker run -i -t e934aafc2206 /bin/bash

命令分析:

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

相關引數說明:

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

安裝JDK和Tomcat

基本思路:將原始檔上傳到宿主機上,再將檔案複製到容器中

  • 下載到本地後使用rz命令上傳jdk和tomcat的安裝包,再解壓檔案
上傳下載命令安裝:yum install lrzsz -y
解壓JDK程式包:tar -zxf /mnt/software/jdk-8u171-linux-x64.tar.gz -C .
重新命名 JDK 檔案:mv jdk1.8.0_171/jdk/

將上傳到宿主機中的jdk和tomcat複製到容器中

docker cp  <path to jdk gz file>/jdk-8u171-linux-x64.tar.gz  <容器名稱或者ID>:/root

設定環境變數

編輯.bashrc

vi ~/.bashrc  or vim ~/.bashrc
export JAVA_HOME=/mnt/software/jdk  ## 這裡要注意目錄要換成自己解壓的jdk 目錄
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  

使環境變數生效

source ~/.bashrc

驗證JDK版本

java -version

在容器中製作tomcat執行指令碼

建立檔案

touch /root/run.sh

編輯檔案

vi /root/run.sh  or vim /root/run.sh

輸入檔案內容,儲存退出

#!/bin/sh
export JAVA_HOME=/mnt/software/jdk
export PATH=$JAVA_HOME/bin:$PATH
sh /mnt/software/tomcat/bin/catalina.sh run

給run.sh新增許可權

chmod u+x /root/run.sh

退出docker容器

exit

建立自定義的Java Web 映象

檢視容器id

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b3b6ac81ad0c        e934aafc2206        "/bin/bash"         38 minutes ago      Exited (0) 6 minutes ago                       pedantic_beaver

根據容器id建立一個新的映象

docker commit 3b6ac81ad0c wf/javaweb:0.1

檢視建立的映象:docker images

用自定義的映象啟動容器

注意點:如果啟動之前的容器時使用了掛載,啟動該映象是也需要使用掛載

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

引數說明:

- -d:表示以“守護模式”執行/root/run.sh指令碼,此時 Tomcat 控制檯不會出現在輸出終端上
- -p:表示宿主機與容器的埠對映,此時將容器內部的 8080 埠對映為宿主機的 58080 埠,這樣就向外界暴露了 58080 埠,可通過 Docker 網橋來訪問容器內部的 8080 埠了
- --name:表示容器名稱

在瀏覽器中,輸入公網IP:埠號,即可訪問 Tomcat 首頁(ps.阿里雲ECS需要配置一下安全組)