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.15.9.tar.gz /mnt/nginx
WORKDIR /mnt/nginx/nginx-1.15.9
#关闭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;"]  

dockerfile优化镜像大小_第1张图片

 dockerfile优化镜像大小_第2张图片

 dockerfile优化镜像大小_第3张图片

 

二、不需要输出的指令丢入/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.15.9
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.15.9
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx""-g","daemon off;"]

dockerfile优化镜像大小_第4张图片

dockerfile优化镜像大小_第5张图片

dockerfile优化镜像大小_第6张图片

三、减少RUN构建

FROM centos:7
ADD nginx-1.15.9.tar.gz /mnt/nginx
WORKDIR /mnt/nginx/nginx-1.15.9
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.15.9
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

dockerfile优化镜像大小_第7张图片

dockerfile优化镜像大小_第8张图片

dockerfile优化镜像大小_第9张图片

 

四、多阶段构建

    FROM centos:7 as build 
    ADD nginx-1.15.9.tar.gz /mnt/nginx 
    WORKDIR /mnt/nginx/nginx-1.15.9
    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.15.9


    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查看镜像

dockerfile优化镜像大小_第10张图片

 dockerfile优化镜像大小_第11张图片

 

五、使用更为轻量级的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 查看

你可能感兴趣的:(docker,nginx,运维,linux)