当前位置: 首页 > news >正文

使用Dockerfile构建镜像

目录

1.使用Dockerfile构建tomcat镜像

1.1 通过ARG传参构建不同版本的tomcat

2.缩小镜像的体积大小

2.1 使用较小体积的基础镜像

2.2 多级构建减少体积


1.使用Dockerfile构建tomcat镜像

cd /opt
mkdir tomcat
cd tomcat/
上传tomcat所需的依赖包
使用tar xf 解压三个压缩包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:$PATHADD 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.9.113:1314

1.1 通过ARG传参构建不同版本的tomcat

注:以以上构建tomcat镜像为基础

cd /opt/tomcat
vim DockerfileFROM 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:$PATHARG 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镜像



浏览器验证

http://192.168.9.113:1314

http://192.168.9.113:1315


2.缩小镜像的体积大小

2.1 使用较小体积的基础镜像

注:以1.1中实验为基础

cd /opt/tomcat
mv Dockerfile Dockerfile.bakvim 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 a3 -p 1313:8080 tomcat:9



浏览器访问测试http://192.168.9.113:1313

2.2 多级构建减少体积

注:以7.15日博客中4.3章节中源码编译安装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 installFROM 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.9.113:80

http://www.lryc.cn/news/402839.html

相关文章:

  • 概率论原理精解【3】
  • [C/C++入门][循环]14、计算2的幂(2的n次方)
  • RPC与服务的注册发现
  • 3112. 访问消失节点的最少时间 Medium
  • FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息
  • Go语言并发编程-案例_3
  • pikachu之跨站脚本攻击(x‘s‘s)
  • Qt模型/视图架构——委托(delegate)
  • python3.11SSL: SSLV3_ALERT_HANDSHAKE_FAILURE
  • [深度学习]基于yolov10+streamlit目标检测演示系统设计
  • 开源模型应用落地-FastAPI-助力模型交互-进阶篇(三)
  • 机器人及其相关工科专业课程体系
  • C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定
  • Spring-Boot基础--yaml
  • C/C++蓝屏整人代码
  • 【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1
  • HBuilder X3.4版本中使用uni-app自定义组件
  • PHP基础语法(一)
  • Python项目打包与依赖管理指南
  • 矿产资源潜力预测不确定性评价
  • 食堂采购系统开发:从需求分析到上线实施的完整指南
  • C++ 数据结构
  • Elasticsearch:评估搜索相关性 - 第 1 部分
  • 超声波清洗机哪款好用?保姆级教学,教你手把手挑选适合自己的超声波清洗机
  • vscode常用组件
  • IDEA创建普通Java项目
  • 华为“铁三角模式”在数据类项目中的应用和价值
  • P1-AI产品经理--九五小庞
  • PHP手边酒店多商户版平台小程序系统源码
  • 计算机视觉7 kag比赛