直接看另一种更优雅的方式
拉取centos7的空白镜像
1 |
docker pull centos:7 |
创建一个目录用来存放后续需要的文件
1 2 |
mkdir tomcat cd tomcat |
下载tomcat 10的二进制文件并解压
1 2 |
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.12/bin/apache-tomcat-10.0.12.tar.gz tar zxvf apache-tomcat-10.0.12.tar.gz |
启动一个centos7的容器,并进入容器的shell
1 |
docker run -it --name mytomcat centos:7 |
根据tomcat的版本要求(https://tomcat.apache.org/whichversion.html)结合OpenJDK安装说明安装OpenJDK 8(http://openjdk.java.net/install/)
1 |
yum install java-1.8.0-openjdk |
设置相关环境变量JAVA_HOME、PATH、CLASSPATH、CATALINA_HOME(https://tomcat.apache.org/tomcat-10.0-doc/RUNNING.txt),请根据实际情况JAVA_HOME中JDK或JRE的安装路径
1 2 3 4 |
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$CLASSPATH export CATALINA_HOME=/root/apache-tomcat-10.0.12 |
退出容器的shell后将tomcat的相关文件复制到mytomcat的容器中
1 |
docker cp apache-tomcat-10.0.12 mytomcat:/root |
将容器保存为临时映像temp_tomcat
1 2 3 4 |
docker commit mytomcat temp_tomcat #下方为示例输出结果 sha256:941ac6069b767f3cc0a4cc224c28472732fdde747a223b4e553cb76f532b28e3 |
创建Dockerfile,准备运行参数
1 2 3 4 |
FROM temp_tomcat MAINTAINER your_name EXPOSE 8080 ENTRYPOINT /root/apache-tomcat-10.0.12/bin/startup.sh && tail -F /root/apache-tomcat-10.0.12/logs/catalina.out |
创建tomcat映像并命名为centos_tomcat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
docker build -t centos_tomcat . #下方为示例输出结果 Sending build context to Docker daemon 28.41MB Step 1/4 : FROM temp_tomcat ---> 941ac6069b76 Step 2/4 : MAINTAINER wuhj ---> Running in 4945a11bbed8 Removing intermediate container 4945a11bbed8 ---> 208a7a1f5a81 Step 3/4 : EXPOSE 8080 ---> Running in c36db7a49b0a Removing intermediate container c36db7a49b0a ---> 433081eb3033 Step 4/4 : ENTRYPOINT /root/apache-tomcat-10.0.12/bin/startup.sh && tail -F /root/apache-tomcat-10.0.12/logs/catalina.out ---> Running in 4356bab491da Removing intermediate container 4356bab491da ---> 2bf9210aecf0 Successfully built 2bf9210aecf0 Successfully tagged centos_tomcat:latest |
通过命令行查看当前的映像列表
1 2 3 4 5 6 7 |
docker images #下方为示例输出结果 REPOSITORY TAG IMAGE ID CREATED SIZE centos_tomcat latest 2bf9210aecf0 6 seconds ago 561MB temp_tomcat latest 941ac6069b76 29 seconds ago 561MB centos 7 eeb6ee3f44bd 4 weeks ago 204MB |
从创建好的centos_tomcat映像启动一个新的容器,并映射本地8088端口
1 2 3 4 |
docker run -d -p 8088:8080 --name tomcat_test centos_tomcat #下方为示例输出结果 bbf91601100855c075bd11e96efa00b864a4da25b9d1cafb52427f484121e7c4 |
通过命令行查看当前运行的容器列表
1 2 3 4 5 |
docker ps #下方为示例输出结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bbf916011008 centos_tomcat "/bin/sh -c '/root/a…" 25 seconds ago Up 23 seconds 0.0.0.0:8088->8080/tcp, :::8088->8080/tcp tomcat_test |
通过浏览器访问http://your_ip_addr:8088,测试tomcat_test容器以及tomcat是否正常运行
方式2相对来说更优雅,完全从Dokerfile构建映像
下载tomcat(https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.12/bin/apache-tomcat-10.0.12.tar.gz)和jdk(https://www.oracle.com/java/technologies/downloads/#java8,需登录)的二进制压缩包,并解压,请根据实际情况调整解压缩命令中tomcat和jdk压缩包的文件名
1 2 |
tar zxvf apache-tomcat-10.0.12.tar.gz tar zxvf jdk-8u301-linux-x64.tar.gz |
使用以下内容创建Dockerfile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#从centos7镜像作为基础开始制作,也可以选择其他系统作为基础映像,如ubuntu:20.04、debian:10等 FROM centos:7 #本镜像的维护者信息 MAINTAINER your_name #添加tomcat和jdk文件到镜像中 ADD jdk1.8.0_301 /root/jdk ADD apache-tomcat-10.0.12 /root/tomcat #设置tomcat和jdk的相关环境变量 ENV CATALINA_HOME=/root/tomcat ENV JAVA_HOME=/root/jdk ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$CLASSPATH ENV CATALINA_HOME=/root/tomcat #描述需要使用的端口 EXPOSE 8080 #启动命令 ENTRYPOINT ["/root/tomcat/bin/catalina.sh", "run"] |
创建tomcat映像并命名为tomcat_centos7
1 |
docker build -t tomcat_centos7 . |
从创建好的tomcat_centos7映像启动一个新的容器,并映射本地8088端口
1 |
docker run -d -p 8088:8080 --name tomcat_test tomcat_centos7 |
通过浏览器访问http://your_ip_addr:8088,测试tomcat_test容器以及tomcat是否正常运行
Comments