一、直接使用仓库镜像
1、查看仓库tomcat
docker search tomcatNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
tomcat Apache Tomcat is an open source implementati…3174[OK]
tomee Apache TomEE is an all-Apache JavaEE certif…93[OK]
dordoka/tomcat Ubuntu14.04, OracleJDK8 and Tomcat8 base…58[OK]
2、拉取最新版本
docker pull tomcat
3、查看本地镜像
[root@dex~]# docker imagesREPOSITORYTAGIMAGEIDCREATEDSIZE
tomcat latest b0e0b0a92cf93 weeks ago680MB
4、将镜像制作为容器
docker run-p8085:8080--name tomcatContainer-d tomcat
使用wget 测试链接,发现是404?
[root@dex opt]# wget localhost:8085--2021-11-1413:00:03-- http://localhost:8085/
Resolvinglocalhost(localhost)...127.0.0.1,::1
Connecting tolocalhost(localhost)|127.0.0.1|:8085... connected.HTTP request sent, awaiting response...4042021-11-1413:00:03ERROR404:(no description).
5、进入容器查看问题
[root@dex opt]# docker exec-u root-it tomcatContainer/bin/bash
root@31f2:/usr/local/tomcat# lsBUILDING.txtCONTRIBUTING.mdLICENSENOTICEREADME.mdRELEASE-NOTESRUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
cd到webapps 发现是个空文件夹?
root@31f2:/usr/local/tomcat/webapps# ls
root@31f2:/usr/local/tomcat/webapps#
但发现有一个webapps.dist,于是cd到该目录下发现了需要的ROOT, examples等文件
ROOT docs examples host-manager manager
于是将webapps.dist修改为webapps
mv webapps.dist webapps
再次运行wget 测试发现可以了
root@31f2:/usr/local/tomcat/webapps/examples# wget localhost:8085--2021-11-1409:38:33-- http://localhost:8085/
Resolvinglocalhost(localhost)...127.0.0.1,::1
Connecting tolocalhost(localhost)|127.0.0.1|:8085... failed: Connection refused.
Connecting tolocalhost(localhost)|::1|:8085... failed: Network is unreachable.
6、将war好拷贝到tomcat的webapps目录下
[root@dex opt]# docker psCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES31f2e214cdbb tomcat"catalina.sh run"14 minutes ago Up14 minutes0.0.0.0:8085->8080/tcp wechatTomcat
先使用XFtp将war传入到对应的/opt/warPackage目录
[root@dex~]# ll/opt/warPackage/
total1202712-rw-r--r--1 root root1231571513 Nov1417:55 fluviolacu-0.0.1-SNAPSHOT.war
开始拷贝war包进tomcat容器的webapps目录下
命令格式:docker cp xxx.war包路径 容器ID:/要复制过去的目录路径
docker cp/warPackage/fluviolacu-0.0.1-SNAPSHOT.war31f2e214cdbb:/usr/local/tomcat/webapps
7、重启容器
重启容器:docker restart +容器ID
docker restart31f2e214cdbb
8、使用挂载文件完成war发布
上面的拷贝war方式比较麻烦,容器关闭war也容易丢失,这里使用挂载的方式就简单多了
进行挂载目录,运行tomcat容器
[root@dex~]# docker run-v/opt/warPackage/:/usr/local/tomcat/webapps/-p8085:8080--name lakeRiverTomcat-d tomcat
二、使用Dockerfile 制作镜像
上面是使用官方的tomcat 镜像直接制作容器,这里我们自己配置dockerfile 来安照自己的需求制作镜像,
先创建一个tomcat_image_create_dir 目录
mkdir tomcat_image_create_dir
然后把对应的tomcat 和jdk 使用wget拉下来
$ wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz
其他版本自己可以去tomcat官网查看按需修改就好
jdk wget 就直接去oracle官网找到对应版本复制链接,然后wget 拉取如
wget--no-check-certificate--no-cookies--header"Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
好了目录下有资源了,再使用vi 创建一个Dockerfile文件配置images
[root@dex tomcat_image_create_dir]# ll
total209996-rw-r--r--1 root root11442169 Dec32020 apache-tomcat-9.0.41.tar.gz-rw-r--r--1 root root719 Nov1519:22 Dockerfile-rw-r--r--1 root root194042837 Nov1517:34 jdk-8u202-linux-x64.tar.gz
Dockerfile文件内容也很简单
[root@dex tomcat_image_create_dir]# cat DockerfileFROM centos:7.8.2003
#拷贝tomcat jdk 到镜像并解压ADD apache-tomcat-9.0.41.tar.gz/usr/local/tomcatADD jdk-8u202-linux-x64.tar.gz/usr/local/jdk
#定义交互时登录路径ENVMYPATH/usr/localWORKDIR $MYPATH
#配置jdk 和tomcat环境变量ENVJAVA_HOME/usr/local/jdk/jdk1.8.0_202ENVCATALINA_HOME/usr/local/tomcat/apache-tomcat-9.0.41ENVCATALINA_BASE/usr/local/tomcat/apache-tomcat-9.0.41ENVCLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENVPATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#设置暴露的端口EXPOSE8080
#运行tomcatCMD/usr/local/tomcat/apache-tomcat-9.0.41/bin/startup.sh&& tail-f/usr/local/tomcat/apache-tomcat-9.0.41/logs/catalina.out
制作镜像,直接在该目录下面
[root@dex tomcat_image_create_dir]# docker build 镜像名.
一回车等待执行完成,镜像就生成了
docker images
查看所有镜像,其他容器运行和(一、直接使用仓库镜像)完全相同