日期: 2021年3月11日

  • Error processing tar file(exit status 1): unexpected EOF 的排查分析

    Error processing tar file(exit status 1): unexpected EOF 的排查分析

    1、在 Jenkins 中构建镜像,报错:Error processing tar file(exit status 1): unexpected EOF。如图1
    在 Jenkins 中构建镜像,报错:Error processing tar file(exit status 1): unexpected EOF。
    图1
    
    
    Step 10/10 : RUN chown -R nginx:nginx /mcloud/ &&     chmod 777 /mcloud/cmp_main/data &&     chmod 777 /usr/share/sync.sh &&     chmod 777 /mcloud/cmp_main/attachment &&     chmod +x /config/init/* &&     chmod +x /etc/nginx/conf.d/* &&     chmod +x /etc/supervisord.d/* &&     rm -rf /mcloud/cmp_main/data/tpl/ &&     rm -rf /etc/nginx/conf.d/status.conf
     ---> Running in 800972ee06bc
    Error processing tar file(exit status 1): unexpected EOF
    Build step 'Docker Build and Publish' marked build as failure
    Finished: FAILURE
    
    
    
    2、查看 Dockerfile ,应该是 ADD 命令的行数过多了一些,进而导致空间不足。参考网址:https://stackoverflow.com/questions/42784396/docker-error-error-processing-tar-fileexit-status-1-unexpected-eof 。如图2
    查看 Dockerfile ,应该是 ADD 命令的行数过多了一些,进而导致空间不足。
    图2
    
    
    ADD code /mcloud/cmp_main
    ADD code/build/c_files/ /
    ADD code/build/sync.sh /usr/share/sync.sh
    ADD code/build/cacheJsSDK.sh /usr/share/cacheJsSDK.sh
    ADD code/build/MP_verify_3RUFnkMVef9eh3mJ.txt /mcloud/cmp_main/
    ADD code/build/MP_verify_qxIMkC3go7fNqBzb.txt /mcloud/cmp_main/
    
    RUN sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
        sed -i 's/disable_functions = exec,system/disable_functions = system/g' /usr/local/php/etc/php.ini
    
    RUN chown -R nginx:nginx /mcloud/ && \
        chmod 777 /mcloud/cmp_main/data && \
        chmod 777 /usr/share/sync.sh && \
        chmod 777 /mcloud/cmp_main/attachment && \
        chmod +x /config/init/* && \
        chmod +x /etc/nginx/conf.d/* && \
        chmod +x /etc/supervisord.d/* && \
        rm -rf /mcloud/cmp_main/data/tpl/ && \
        rm -rf /etc/nginx/conf.d/status.conf
    
    
    
    3、剪切 /build/sync.sh 至 /build/c_files/usr/share/sync.sh。剪切 /build/cacheJsSDK.sh 至 /build/c_files/usr/share/cacheJsSDK.sh。剪切 /build/MP_verify_3RUFnkMVef9eh3mJ.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_3RUFnkMVef9eh3mJ.txt。剪切 /build/MP_verify_qxIMkC3go7fNqBzb.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_qxIMkC3go7fNqBzb.txt。编辑 Dockerfile,删除了 4 行 ADD。如图3
    剪切 /build/sync.sh 至 /build/c_files/usr/share/sync.sh。剪切 /build/cacheJsSDK.sh 至 /build/c_files/usr/share/cacheJsSDK.sh。剪切 /build/MP_verify_3RUFnkMVef9eh3mJ.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_3RUFnkMVef9eh3mJ.txt。剪切 /build/MP_verify_qxIMkC3go7fNqBzb.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_qxIMkC3go7fNqBzb.txt。编辑 Dockerfile,删除了 4 行 ADD。
    图3
    
    
    RUN sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
        sed -i 's/disable_functions = exec,system/disable_functions = system/g' /usr/local/php/etc/php.ini
    
    ADD code /mcloud/cmp_main
    ADD code/build/c_files/ /
    
    RUN chown -R nginx:nginx /mcloud/ && \
        chmod 777 /mcloud/cmp_main/data && \
        chmod 777 /usr/share/sync.sh && \
        chmod 777 /mcloud/cmp_main/attachment && \
        chmod +x /config/init/* && \
        chmod +x /etc/nginx/conf.d/* && \
        chmod +x /etc/supervisord.d/* && \
        rm -rf /mcloud/cmp_main/data/tpl/ && \
        rm -rf /etc/nginx/conf.d/status.conf
    
    
    
    4、再次构建,第一次构建报错:unknown parent image ID sha256:。不过第二次构建成功。如图4
    再次构建,第一次构建报错:unknown parent image ID sha256:。不过第二次构建成功。
    图4
    5、调整前后的镜像大小分别为:4711、3882。大小减少了:4711 – 3882 = 829。如图5
    调整前后的镜像大小分别为:4711、3882。大小减少了:4711 - 3882 = 829。
    图5
    6、另一个可能的原因在于 Dockerfile 刚经过大幅度的修改。此种情况下,建议多构建几次。最终还是可以构建成功。