用Dockerfile生成镜像时,遇到报错:failed to copy files: Error processing tar file(exit status 1): unexpected EOF
failed to copy files: Error processing tar file(exit status 1): unexpected EOF
·
项目场景:
在使用docker利用Dockerfile生成镜像时
问题描述
用Dockerfile生成镜像时,遇到的报错:failed to copy files: Error processing tar file(exit status 1): unexpected EOF
原来的Dockerfile内容:
FROM centos7-ssh
ADD jdk-8u212-linux-x64.tar.gz /usr/local/jdk1.8.0_212
RUN sudo mv /usr/local/jdk1.8.0_212 /usr/local/jdk
ENV JAVA_HOME /home/hadoop/jdk
ENV PATH $JAVA_HOME/bin:$PATH
ADD hadoop-3.1.3.tar.gz /usr/local/hadoop-3.1.3
RUN sudo mv /usr/local/hadoop-3.1.3 /usr/local/hadoop
ENV HADOOP_HOME /home/hadoop/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
运行截图:
文件目录:
原因分析:
很奇怪,jdk的压缩包加载时没有报错,hadoop的压缩包加载时却报错了,找了很多资料试了很多次都没有解决,估计是我hadoop的压缩包出了某种问题,最后决定“曲线救国”。我的目的是将jdk和hadoop这两个依赖的文件上传到镜像,ADD命令不行,那就换COPY命令,将压缩包解压后COPY过去就行了。ADD命令的作用:将本地文件添加到镜像中,tar类型文件会自动解压,可以访问网络资源,但网络压缩资源不会被解压。COPY命令的作用:将本地文件添加到镜像中,但是不会自动解压文件,也不能访问网络资源。
解决方案:
修改后的Dockerfile文件:
FROM centos7-ssh
COPY jdk1.8.0_212 /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk
ENV PATH $JAVA_HOME/bin:$PATH
COPY hadoop-3.1.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
更多推荐
已为社区贡献1条内容
所有评论(0)