Dockerfile小记之使用RUN命令需要注意 
                                                    
                        
                    
                    
  
                    
                    使用RUN命令需要注意
避免多条RUN的情况
因为RUN 会在现有的基础上新添一层layer,创建一个新的image,所以需要在容器内执行多条shell命令尽量使用&&\连接,这样就只会创建一次layer
dockerfile错误案例:
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y wget
RUN wget https://github.com/ipinfo/cli/releases/download/ipinfo-2.0.1/ipinfo_2.0.1_linux_amd64.tar.gz
RUN tar zxf ipinfo_2.0.1_linux_amd64.tar.gz
RUN mv ipinfo_2.0.1_linux_amd64 /usr/bin/ipinfo
RUN rm -rf ipinfo_2.0.1_linux_amd64.tar.gz
这样写的问题是,镜像的分层会变的很多,每一个RUN都是一个分层,打出来的镜像包也会变大。
修改后的正确写法
FROM ubuntu:latest
RUN apt-get update && \
    apt-get install -y wget && \
    wget https://github.com/ipinfo/cli/releases/download/ipinfo-2.0.1/ipinfo_2.0.1_linux_amd64.tar.gz && \
    tar zxf ipinfo_2.0.1_linux_amd64.tar.gz && \
    mv ipinfo_2.0.1_linux_amd64 /usr/bin/ipinfo && \
    rm -rf ipinfo_2.0.1_linux_amd64.tar.gz
这时候再用docker image histroy <Image ID> 查看分层,就会看到分层少了很多。
这样所有的RUN命令只生成一层image layer。打包出来的镜像也没有那么大了

本作品采用《CC 协议》,转载必须注明作者和本文链接
 
           村望老弟 的个人博客
 村望老弟 的个人博客
         
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号