1. 首页
  2. 技术知识

docker进阶教程之dockerfile优化镜像大小

目录

    一、无优化构建镜像二、不需要输出的指令丢入/dev/null三、减少RUN构建四、多阶段构建五、使用更为轻量级的linux发行版本 总结

一、无优化构建镜像

  1. mkdir /mnt/nginx
  2.  
  3. vim Dockerfile
  4. FROM centos:7
  5. RUN yum install -y gcc pcre pcre-devel devel zlib-devel make
  6. ADD nginx-1.22.0.tar.gz /mnt/nginx
  7. WORKDIR /mnt/nginx/nginx-1.22.0
  8. #关闭debug日志
  9. RUN sed -i ‘s/CFLAGS=”$CFLAGS -g”/#CFLAGS=”$CFLAGS -g”/g’ auto/cc/gcc 
  10. RUN ./configure –prefix=/usr/local/nginx 
  11. RUN make
  12. RUN make install
  13. EXPOSE 80
  14. VOLUME [“/usr/local/nginx/html”]
  15. CMD [“/usr/local/nginx/sbin/nginx”,”-g”,”daemon off;”]  

复制代码


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

  1. FROM centos:7
  2. RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all
  3. ADD nginx-1.22.0.tar.gz /mnt/nginx
  4. WORKDIR /mnt/nginx/nginx-1.22.0
  5. RUN sed -i ‘s/CFLAGS=”$CFLAGS -g”/#CFLAGS=”$CFLAGS -g”/g’ auto/cc/gcc
  6. RUN ./configure –prefix=/usr/local/nginx &> /dev/null
  7. RUN make &> /dev/null
  8. RUN make install &> /dev/null
  9. RUN rm -rf /mnt/nginx/nginx-1.22.0
  10. EXPOSE 80
  11. VOLUME [“/usr/local/nginx/html”]
  12. CMD [“/usr/local/nginx/sbin/nginx””-g”,”daemon off;”]

复制代码


三、减少RUN构建

  1. FROM centos:7
  2. ADD nginx-1.22.0.tar.gz /mnt/nginx
  3. WORKDIR /mnt/nginx/nginx-1.22.0
  4. RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
  5.  yum clean all && \
  6.  sed -i ‘s/CFLAGS=”$CFLAGS -g”/#CFLAGS=”$CFLAGS -g”/g’ auto/cc/gcc && \
  7.  ./configure –prefix=/usr/local/nginx &> /dev/null && \
  8.  make &> /dev/null && make install &> /dev/null &&\
  9.  rm -rf /mnt/nginx/nginx-1.22.0
  10. EXPOSE 80
  11. VOLUME [“/usr/local/nginx/html”]
  12. CMD [“/usr/local/nginx/sbin/nginx”,”-g”,”daemon off;”]

复制代码

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

docker images查看镜像

四、多阶段构建

  1. FROM centos:7 as build 
  2. ADD nginx-1.22.0.tar.gz /mnt/nginx 
  3. WORKDIR /mnt/nginx/nginx-1.22.0
  4. RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
  5. yum clean all &&\
  6. sed -i ‘s/CFLAGS=”$CFLAGS -g”/#CFLAGS=”$CFLAGS -g”/g’ auto/cc/gcc && \
  7. ./configure –prefix=/usr/local/nginx &> /dev/null && \
  8. make &>/dev/null && \
  9. make install &>/dev/null && \
  10. rm -rf /mnt/nginx/nginx-1.22.0
  11. FROM centos:7
  12. EXPOSE 80
  13. VOLUME [“/usr/local/nginx/html”]
  14. COPY –from=build /usr/local/nginx /usr/local/nginx
  15. CMD [“/usr/local/nginx/sbin/nginx”,”-g”,”daemon off;”]

复制代码

  1. docker build -t nginx:v4 . 构建镜像
  2. docker images查看镜像

复制代码


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

debian

alpine

apt add

Sandbox

Busybox

  1. #下载debian压缩包
  2. wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
  3. docker import debian-7.0-x86-minimal.tar.gz — debian:v1 生成镜像
  4. docker images 查看

复制代码
总结

到此这篇关于docker进阶教程之dockerfile优化镜像大小的文章就介绍到这了,更多相关dockerfile优化镜像大小内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108259.html

联系我们