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

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

2017年07月27日 16:45:53 閱讀數:1381 標籤: docker 更多java

我的分類: dockerlinux

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/u011382384/article/details/76208821web

CentOS 7 中 Docker 的安裝 
Docker 軟件包已經包括在默認的 CentOS-Extras 軟件源裏。所以想要安裝 docker,只須要運行下面的 yum 命令(安裝時間挺長。。。):docker

[root@localhost ~]# yum install dockerapache

啓動 Docker 服務 
安裝完成後,使用下面的命令來啓動 docker 服務,並將其設置爲開機啓動:vim

[root@localhost ~]# service docker start 
[root@localhost ~]# chkconfig docker oncentos

製做容器 
鏡像下載到本地之後,就可使用Docker運行,經過下面的命令參數啓動容器:tomcat

docker run <相關參數> <鏡像 ID> <初始命令>

-i:表示以「交互模式」運行容器
-t:表示容器啓動後會進入其命令行
-v:表示須要將本地哪一個目錄掛載到容器中  (這個目錄和本地是交互的,目錄下的文件在容器和本地上是能夠相互看見的)
格式:-v <宿主機目錄>:<容器目錄>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

個人相關程序都在宿主機器的/data/software/目錄下,而且想把它掛載到容器的相同目錄下:bash

[root@localhost ~]# sudo docker run -i -t -v /data/software/:/data/software/ 29ca665c0a12 /bin/bash服務器

安裝jdk/tomcat

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

能夠用命令【docker cp 文件名稱 容器id : 容器下的路徑】把相應的安裝文件複製到容器中
  • 1
  • 2
  • 3

安裝相關的JDK等程序,這裏所有安裝到/data/目錄:

[root@localhost ~]# docker cp jdk-8u77-linux-x64.tar.gz 29ca665c0a12:/data/ 
root@29ca665c0a12:/data# tar -zxvf jdk-8u77-linux-x64.tar.gz 
root@29ca665c0a12:/data# mv jdk1.8.0_77 jdk

[root@localhost ~]# docker cp apache-tomcat-7.0.68.zip 29ca665c0a12:/data/ 
root@29ca665c0a12:/data# unzip apache-tomcat-7.0.68.zip 
root@29ca665c0a12:/data# mv apache-tomcat-7.0.68 tomcat

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

root@29ca665c0a12:/data# apt-get update 
root@29ca665c0a12:/data# apt-get install -y vim

配置環境變量

root@29ca665c0a12:/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

保存並退出,設置當即生效:

root@29ca665c0a12:/data# source /etc/profile

Tomcat 啓動腳本

建立start.sh啓動腳本

root@29ca665c0a12:/data# vim /data/start.sh

添加如下內容:

#!/bin/bash
# Export environment variable
source /etc/profile
# Start tomcat
bash /data/tomcat/bin/catalina.sh run
  • 1
  • 2
  • 3
  • 4
  • 5

添加可執行權限:

root@29ca665c0a12:/data# chmod u+x /data/start.sh

而後退出 容器

root@29ca665c0a12:/data# exit

#查看容器
docker ps    #查看運行的容器
docker ps -a  #查看 全部容器

docker start 容器Id      #啓動容器
docker restart 容器id    #重啓
docker stop  容器id      #中止容器
docker rm  容器id        #刪除容器
docker rmi 鏡像id        #刪除鏡像

docker ps 還看到容器啓動成功 說明你成功了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

提交鏡像

提交容器 建立鏡像 docker commit 容器ID 鏡像名稱

[root@localhost ~]# sudo docker commit 39b2cf60a4c1 tomcat/java

查看是否建立鏡像

[root@localhost ~]# sudo docker images

若是看到 tomcat/java 這個鏡像存在說明你成功了

docker inspect能夠查看新建立的鏡像的詳細信息:

[root@localhost ~]# sudo docker inspect tomcat/java

運行新建立的容器 
( -p 18080:8080 是把 服務器的端口18080映射到容器端口8080 ,javaweb 命名容器名稱, /data/start.sh 啓動文件)

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

-p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 18080 端口,
這樣就向外界暴露了 18080 端口可經過 Docker 網橋來訪問容器內部的 8080 端口了。
  • 1
  • 2

異常: 
啓動一個有 nat 映射端口的容器時,iptables 報 No chain/target/match by that name 
這裏寫圖片描述

找到系統的/etc/sysconfig/iptables ,若是沒有用如下命令保存一下,而後查看裏邊的內容

[root@localhost ~]# iptables-save > /etc/sysconfig/iptables

博主是沒有iptables這個文件,直接執行上面命令就建立了,從新啓動後就成功了(同時關掉了firewalld) 
這裏寫圖片描述
而後訪問 http://192.168.164.129:18080/ 
這裏寫圖片描述

詳細請看這篇帖子

相關文章
相關標籤/搜索