目标:接下来我们通过基础镜像centos(latest),在该镜像中安装jdk和tomcat以后将其制作为一个新的镜像mycentos
1.创建容器
#拉取镜像 docker pull centos #创建容器 docker run -di --name mycentos1 centos
2.拷贝资源
#通过官网下载tomcat和jdk安装包 curl -O https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz curl -O https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz #将宿主机的tomcat和jdk拷贝至容器 docker cp /root/apache-tomcat-10.0.20.tar.gz mycentos:/root docker cp /root/jdk-18_linux-x64_bin.tar.gz mycentos:/root
3.安装资源
#进入容器 docker exec -it mycentos1 /bin/bash ---------在容器内部执行------------- #切换至/root目录 cd /root/ #创建tomcat和java目录 mkdir -p /usr/local/tomcat mkdir -p /usr/local/java #将jdk和tomcat解压至容器/usr/local/java和/usr/local/tomcat目录中 tar -zxvf apache-tomcat-10.0.20.tar.gz -C /usr/local/tomcat tar -zxvf jdk-18_linux-x64_bin.tar.gz -C /usr/local/java #配置jdk环境变量 vi /etc/profile #在环境变量文件中添加以下内容 export JAVA_HOME=/usr/local/java/jdk-18.0.1.1 export PATH=$PATH:$JAVA_HOME/bin #重新加载环境变量文件 source /etc/profile #测试环境变量是否配置成功 [root@15d01d4d5db5 apache-tomcat-9.0.62]# java -version java version "18.0.1.1" 2022-04-22 Java(TM) SE Runtime Environment (build 18.0.1.1+2-6) Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing) #启动tomcat [root@a72a482d83f2 apache-tomcat-10.0.20]# bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-10.0.20 Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-10.0.20 Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-10.0.20/temp Using JRE_HOME: /usr/local/java/jdk-18.0.1.1 Using CLASSPATH: /usr/local/tomcat/apache-tomcat-10.0.20/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-10.0.20/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. #没有指定端口,无法访问页面,所以停止tomcat [root@5f173819912b apache-tomcat-10.0.20]# bin/shutdown.sh #删除tomcat和jdk压缩包 rm apache-tomcat-9.0.62.tar.gz jdk-18_linux-x64_bin.tar.gz -rf #退出容器 exit
4.构建镜像
[root@web-server ~]# docker commit -a="liang" -m="jdk18 and tomcat9" mycentos1 mycentos
-
-a:提交的镜像作者
-
-c:使用Dockerfile指令来创建镜像;
-
-m:提交时的文字说明
-
-p:在commit时,将容器暂停
5.使用构建的镜像创建容器
启动完tomcat后,访问http://192.168.85.5:8080
总结:docker commit的步骤
- 去官网下载centos镜像
- 根据官网镜像创建了一个容器
- 将宿主机的jdk和tomcat的资源拷贝进容器
- 在容器内部安装了jdk和tomcat
- 将这个已安装 jdk和tomcat的容器重新构建为一个新镜像mycentos
遇到的问题:
前面的步骤全部成功,但到了最终访问页面访问不出来,原因是tomcat9版本和jdk18版本不搭配,tomcat版本过低,改为tomcat10就成功了



