使用Docker搭建Java Web執行環境
阿新 • • 發佈:2018-12-26
操作環境
- 伺服器:阿里雲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需要配置一下安全組)