目录
一.使用使用Dockerfile构建tomcat镜像
cd /opt
mkdir tomcat
cd tomcat/
上传tomcat所需的依赖包
vim Dockerfile
FROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"
ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ADD apache-tomcat-9.0.16.tar.gz /opt/
EXPOSE 8080
CMD ["/opt/apache-tomcat-9.0.16/bin/catalina.sh", "run"]
docker build -t tomcat:9.0 . #构建镜像
docker images #查看镜像
docker run -d --name a1 -p 1314:8080 tomcat:9.0 #启动容器
浏览器访问验证:http://192.168.80.101:1314
1.通过ARG传参构建不同版本的tomcat
基于上文构建tomcat镜像为基础
cd /opt/tomcat
vim Dockerfile
FROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"
ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ARG VER
ADD $VER /opt/tomcat
EXPOSE 8080
CMD ["/opt/tomcat/bin/catalina.sh", "run"]
docker build --build-arg VER=apache-tomcat-8.5.16 -t tomcat:8.5 . #构建8.5版本tomcat镜像
docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9.0 . #构建9.0版本tomcat镜像
docker run -d --name a1 -p 1314:8080 tomcat:8.5
docker run -d --name b1 -p 1315:8080 tomcat:9.0
浏览器验证
http://192.168.80.101:1314
http://192.168.80.101:1315
二.缩小镜像的体积大小
1.使用较小体积的基础镜像
以上文实验为基础
cd /opt/tomcat
mv Dockerfile Dockerfile.bak
vim Dockerfile
FROM openjdk:8-jdk-alpine
ARG VER
COPY $VER /opt/tomcat/
CMD ["/opt/tomcat/bin/catalina.sh", "run"]
docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9 . #构建镜像
docker run -d --name a2 -p 1313:8080 tomcat:9
浏览器访问测试http://192.168.80.101:1313
2.多级构建减少体积
由于正常安装nginx体积很大
通过多级构建减少镜像体积
vim Dockerfile
FROM centos:7 as first #为第一级构建镜像设置别名
ADD nginx-1.24.0.tar.gz /opt/
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \
useradd -M -s /sbin/nologin nginx && \
cd /opt/nginx-1.24.0/ && \
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \
make && \
make install
FROM centos:7 #开启第二级构建
COPY --from=first /usr/local/nginx/ /usr/local/nginx/ #copy --from 从其他构建阶级中复制源文件
RUN useradd -M -s /sbin/nologin nginx #运行用户必要命令
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
docker build -t nginx:v2 .
docker images
docker run -d --name c1 -p 80:80 nginx:v2
docker ps -a
浏览器访问验证:http://192.168.80.101:80