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

【docker】dockerfile优化镜像大小

目录

一、无优化构建镜像

二、不需要输出的指令丢入/dev/null

三、减少RUN构建

四、多阶段构建

五、使用更为轻量级的linux发行版本 


一、无优化构建镜像

mkdir /mnt/nginx
 
vim Dockerfile
FROM centos:7
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make
ADD nginx-1.22.0.tar.gz /mnt/nginx
WORKDIR /mnt/nginx/nginx-1.22.0
#关闭debug日志
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc 
RUN ./configure --prefix=/usr/local/nginx 
RUN make
RUN make install
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]  

二、不需要输出的指令丢入/dev/null

FROM centos:7
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all
ADD nginx-1.22.0.tar.gz /mnt/nginx
WORKDIR /mnt/nginx/nginx-1.22.0
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
RUN ./configure --prefix=/usr/local/nginx &> /dev/null
RUN make &> /dev/null
RUN make install &> /dev/null
RUN rm -rf /mnt/nginx/nginx-1.22.0
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx""-g","daemon off;"]

三、减少RUN构建

FROM centos:7
ADD nginx-1.22.0.tar.gz /mnt/nginx
WORKDIR /mnt/nginx/nginx-1.22.0
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
 yum clean all && \
 sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
 ./configure --prefix=/usr/local/nginx &> /dev/null && \
 make &> /dev/null && make install &> /dev/null &&\
 rm -rf /mnt/nginx/nginx-1.22.0
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

docker build -t nginx:v3 . 构建镜像

docker images查看镜像
 

四、多阶段构建

FROM centos:7 as build 
ADD nginx-1.22.0.tar.gz /mnt/nginx 
WORKDIR /mnt/nginx/nginx-1.22.0
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
yum clean all &&\
sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
./configure --prefix=/usr/local/nginx &> /dev/null && \
make &>/dev/null && \
make install &>/dev/null && \
rm -rf /mnt/nginx/nginx-1.22.0

FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

docker build -t nginx:v4 . 构建镜像

docker images查看镜像

五、使用更为轻量级的linux发行版本 

debian
alpine
apt add
Sandbox
Busybox

#下载debian压缩包
wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

docker import debian-7.0-x86-minimal.tar.gz -- debian:v1 生成镜像

docker images 查看

相关文章:

  • m基于RFID和DBSCAN聚类的InSAR室内三维定位算法的matlab仿真
  • 【面试题】 对象、原型、原型链与继承?这次我懂了!
  • python-sklearn模型通用方法的介绍
  • 入坑 Hack The Box
  • Pr 视频效果:模糊与锐化
  • 智慧城市建设及发展资料合集
  • JMeter笔记16 | 性能参数配置及测试监听
  • 三个“清洁代码”技巧将使您的开发团队效率提高 50%
  • create® 3入门教程-使用多个机器人
  • Redis实战篇一 (短信登录)
  • Java高级——Class文件及解析
  • 高效代码静态测试工具Klocwork 2022.3版本快讯
  • java毕业设计艾灸减肥管理网站Mybatis+系统+数据库+调试部署
  • 【day12】【洛谷算法题】-P5712Apples-刷题反思集[入门2分支结构]
  • 【C语言进阶考试】你是否真正学懂了C语言
  • 《深入 React 技术栈》
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • exif信息对照
  • Flex布局到底解决了什么问题
  • Javascript编码规范
  • Object.assign方法不能实现深复制
  • Python_OOP
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Vue UI框架库开发介绍
  • Vue2 SSR 的优化之旅
  • web标准化(下)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 浮动相关
  • 基于组件的设计工作流与界面抽象
  • 聚类分析——Kmeans
  • 力扣(LeetCode)965
  • 你不可错过的前端面试题(一)
  • 树莓派 - 使用须知
  • 微信小程序--------语音识别(前端自己也能玩)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 用简单代码看卷积组块发展
  • 正则学习笔记
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #预处理和函数的对比以及条件编译
  • $(selector).each()和$.each()的区别
  • (9)目标检测_SSD的原理
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (黑马点评)二、短信登录功能实现
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (强烈推荐)移动端音视频从零到上手(下)
  • (学习日记)2024.01.19
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .Net MVC4 上传大文件,并保存表单
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 的字符串暂存池