Dockerfile优化镜像大小

目录

一、无优化构建镜像

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

三、减少RUN构建

四、多阶段构建


一、无优化构建镜像

[root@docker ~]#mkdir /mnt/nginx
[root@docker ~]#cd /mnt/nginx/ 
[root@docker 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;"]

[root@docker nginx]#docker build -t nginx:v1 .
#构建镜像
[root@docker nginx]#docker images   #查看大小
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        v1        61893d48f2cf   6 minutes ago   469MB  

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

[root@docker ~]#mkdir /mnt/nginx
[root@docker ~]#cd /mnt/nginx/
[root@docker nginx]#rz -E
rz waiting to receive.
[root@docker nginx]#ls
nginx-1.22.0.tar.gz
[root@docker nginx]#vim Dockerfile

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;"]

[root@docker nginx]#docker build -t nginx:v2 .
#构建镜像
[root@docker nginx]#docker images   #查看大小对比发现减少了100多MB
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginx        v2        fd74f489dc08   About a minute ago   311MB

 

三、减少RUN构建

[root@docker nginx]#vim Dockerfile
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;"]

[root@docker nginx]#docker build -t nginx:v3 .
#构建镜像
[root@docker nginx]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginx        v3        2247fd0e7f54   About a minute ago   309MB
nginx        v2        fd74f489dc08   11 minutes ago       311MB

 

四、多阶段构建

[root@docker nginx]#vim Dockerfile

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;"]

[root@docker nginx]#docker build -t nginx:v4 .
#构建镜像
[root@docker nginx]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v4        39550a9162bc   11 minutes ago   205MB
nginx        v3        2247fd0e7f54   19 minutes ago   309MB
nginx        v2        fd74f489dc08   28 minutes ago   311MB

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值