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/目錄下,並且想把它掛載到容器的相同目錄下:
~]# 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/
詳細請看這篇帖子