1. 程式人生 > >centos7 下 基於docker搭建java/tomcat (方式一)

centos7 下 基於docker搭建java/tomcat (方式一)

CentOS 7 中 Docker 的安裝
Docker 軟體包已經包括在預設的 CentOS-Extras 軟體源裡。因此想要安裝 docker,只需要執行下面的 yum 命令(安裝時間挺長。。。):

[[email protected] ~]# yum install docker

啟動 Docker 服務
安裝完成後,使用下面的命令來啟動 docker 服務,並將其設定為開機啟動:

[[email protected] ~]# service docker start
[[email protected] ~]# chkconfig docker on

製作容器
映象下載到本地以後,就可以使用Docker執行,通過下面的命令引數啟動容器:

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

-i:表示以“互動模式”執行容器
-t:表示容器啟動後會進入其命令列
-v:表示需要將本地哪個目錄掛載到容器中  (這個目錄和本地是互動的,目錄下的檔案在容器和本地上是可以相互看見的)
格式:-v <宿主機目錄>:<容器目錄>

我的相關程式都在宿主機器的/data/software/目錄下,並且想把它掛載到容器的相同目錄下:

[[email protected]

~]# sudo docker run -i -t -v /data/software/:/data/software/ 29ca665c0a12 /bin/bash

安裝jdk/tomcat

建立好容器自動進入了容器   然後安裝JDK和Tomcat等(這步最重要的就是配置tomcat環境,配置不好重啟容器不能執行)

可以用命令【docker cp 檔名稱 容器id : 容器下的路徑】把相應的安裝檔案複製到容器中 

安裝相關的JDK等程式,這裡全部安裝到/data/目錄:

[[email protected] ~]# docker cp jdk-8u77-linux-x64.tar.gz 29ca665c0a12:/data/

[email protected]:/data# tar -zxvf jdk-8u77-linux-x64.tar.gz
[email protected]:/data# mv jdk1.8.0_77 jdk

[[email protected] ~]# docker cp apache-tomcat-7.0.68.zip 29ca665c0a12:/data/
[email protected]:/data# unzip apache-tomcat-7.0.68.zip
[email protected]:/data# mv apache-tomcat-7.0.68 tomcat

附:docker容器中安裝vim(apt-get install

[email protected]:/data# apt-get update
[email protected]:/data# apt-get install -y vim

配置環境變數

[email protected]:/data# vim /etc/profile

新增下面的配置:

export HISTTIMEFORMAT 
JAVA_HOME=/data/jdk
CLASSPATH=$JAVA_HOME/lib/ 
PATH=$PATH:$JAVA_HOME/bin 
export PATH JAVA_HOME CLASSPATH

export CATALINA_HOME=/data/tomcat 
export CATALINA_BASE=/data/tomcat

儲存並退出,設定立即生效:

[email protected]:/data# source /etc/profile

Tomcat 啟動指令碼

建立start.sh啟動指令碼

[email protected]:/data# vim /data/start.sh

新增以下內容:

#!/bin/bash
# Export environment variable
source /etc/profile
# Start tomcat
bash /data/tomcat/bin/catalina.sh run

新增可執行許可權:

[email protected]:/data# chmod u+x /data/start.sh

然後退出 容器

[email protected]:/data# exit

#檢視容器
docker ps    #檢視執行的容器
docker ps -a  #檢視 所有容器

docker start 容器Id      #啟動容器
docker restart 容器id    #重啟
docker stop  容器id      #停止容器
docker rm  容器id        #刪除容器
docker rmi 映象id        #刪除映象

docker ps 還看到容器啟動成功 說明你成功了

提交映象

提交容器 建立映象 docker commit 容器ID 映象名稱

[[email protected] ~]# sudo docker commit 39b2cf60a4c1 tomcat/java

檢視是否建立映象

[[email protected] ~]# sudo docker images

如果看到 tomcat/java 這個映象存在說明你成功了

docker inspect可以檢視新建立的映象的詳細資訊:

[[email protected] ~]# sudo docker inspect tomcat/java

執行新建立的容器
( -p 18080:8080 是把 伺服器的埠18080對映到容器埠8080 ,javaweb 命名容器名稱, /data/start.sh 啟動檔案)

[[email protected] ~]# docker run -d -p 18080:8080 –name javaweb javazyl /data/start.sh

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

異常:
啟動一個有 nat 對映埠的容器時,iptables 報 No chain/target/match by that name
這裡寫圖片描述

找到系統的/etc/sysconfig/iptables ,如果沒有用以下命令儲存一下,然後檢視裡邊的內容

[[email protected] ~]# iptables-save > /etc/sysconfig/iptables

博主是沒有iptables這個檔案,直接執行上面命令就建立了,重新啟動後就成功了(同時關掉了firewalld)
這裡寫圖片描述
然後訪問 http://192.168.164.129:18080/
這裡寫圖片描述

詳細請看這篇帖子