Docker镜像瘦身

镜像越小越好用,瘦身就是为了让它又小又快又安全

镜像越小,下载、上传速度越快;节省存储空间;构建更快;镜像里东西越少,漏洞越少,更安全;小镜像启动更快。

Docker镜像瘦身=更小、更快、更省空间、更安全、更好维护。

多阶段构建,基于 Alpine Linux 源码编译一个自定义的 Nginx 镜像

FROM alpine AS al

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk update && apk add --no-cache gcc g++ make libc-dev pcre-dev zlib-dev openssl-dev

ADD ./nginx-1.29.4.tar.gz /

RUN cd nginx-1.29.4 && ./configure --prefix=/usr/local/nginx && make

FROM alpine

RUN mkdir -p /usr/local/nginx/{html,conf}

COPY --from=al /nginx-1.29.4/objs/nginx /usr/local/sbin/

COPY --from=al /nginx-1.29.4/conf/* /usr/local/nginx/conf/

COPY --from=al /nginx-1.29.4/html/* /usr/local/sbin/html/

EXPOSE 80

CMD "nginx","-g","daemon off;"

第一阶段:编译 Nginx(构建阶段)

以 Alpine Linux 为基础镜像,命名为 al

把 Alpine 的官方软件源替换为阿里云镜像,解决国内网络访问慢、DNS 解析失败的问题。

更新软件包索引,安装编译 Nginx 所需的依赖

把当前目录下的 Nginx 源码包解压到容器根目录

进入解压后的源码目录,执行 configure 配置编译参数(指定安装路径),然后 make 编译 Nginx

第二阶段:生成最终镜像(运行阶段)

再次以纯净的 Alpine 为基础镜像,构建最终的运行镜像

创建 Nginx 运行所需的目录:html 放静态页面,conf 放配置文件

从第一阶段的构建镜像里,复制编译好的 Nginx 二进制文件、配置文件和静态页面到最终镜像里

声明容器会暴露 80 端口

指定容器启动时执行的命令:以前台模式运行 Nginx,防止容器启动后直接退出

相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
nginx部署教程
运维·网络·nginx
b***25114 小时前
电池组PACK自动化生产线:从电芯到成品的精密制造之路
运维·自动化·制造
云边云科技_云网融合4 小时前
AI 网关:企业 AI 时代的 “智能交通枢纽“—— 六大行业典型场景深度解析
大数据·运维·人工智能
明夜之约4 小时前
Linux 系统命令使用速查手册
linux·运维
武子康5 小时前
调查研究-153 Cloudflare 能部署网站吗?2026 年完整对比 Vercel / Netlify / 自建服务器
大数据·运维·服务器·人工智能·部署·devops·opc
一个向上的运维者5 小时前
Docker 自定义网络中容器无法通过宿主机 IP 访问服务的完整排障记录
网络·tcp/ip·docker
ClouGence5 小时前
CloudDM 3.1.0 发布:初始化、驱动管理与升级体验全面优化
docker·开源·数据库管理·企业开发·数据库工具·数据库运维
utf8mb4安全女神5 小时前
子网划分【概念+实操+理解】
运维·服务器·网络
xcLeigh5 小时前
KES数据库运维监控与故障排查实战
运维·数据库·sql·故障排查·运维监控·kes
比昨天多敲两行5 小时前
Linux信号
linux·运维·服务器