最简单的Dockerfile解压:找不到文件

我是一个新的docker用户。 我花了很多时间在一个错误,Dockerfile真的很简单,但我无法解决这个问题。

我试图下载一个tar文件,并将其解压缩

这里是我的Dockerfile(每次尝试不在同一时间在Dockerfile中,为了简单起见,我把它们放在一起)

FROM ubuntu:latest # 1st try ADD https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz /tmp/ RUN ls -lah /tmp/glib-2.52.1.tar.xz ADD /tmp/glib-2.52.1.tar.xz /tmp # 2nd try ADD https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz /tmp/ RUN ls -lah /tmp/glib-2.52.1.tar.xz RUN tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz # 3rd try WORKDIR /tmp/ RUN wget https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz RUN ls -lah glib-2.52.1.tar.xz RUN tar -xf glib-2.52.1.tar.xz # 4th try RUN wget https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz -O /tmp/glib-2.52.1.tar.xz RUN ls -lah /tmp/glib-2.52.1.tar.xz ADD /tmp/glib-2.52.1.tar.xz /tmp # 5th try RUN wget https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz -O /tmp/glib-2.52.1.tar.xz RUN ls -lah /tmp/glib-2.52.1.tar.xz RUN tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz 

我试过每一个可能的事情,使这个文件beign下载和unarchive它。

该错误只发生在最后一步命令(unarchive,第4步)。

我基本上尝试了第五次尝试在我的电脑上,它的工作原理:

 $> wget https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz -O /tmp/glib-2.52.1.tar.xz $> tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz $> ls /tmp/glib* glib-2.52.1 glib-2.52.1.tar.xz 

这里是我使用焦油时的输出:

 $> sudo docker build -t gtk --no-cache . Sending build context to Docker daemon 3.584kB Step 1/5 : FROM ubuntu:latest ---> 0ef2e08ed3fa Step 2/5 : ADD https://download.gnome.org/sources/glib/2.52/glib-2.52.1.tar.xz /tmp/ Downloading [==================================================>] 7.676MB/7.676MB ---> caa91f90fdca Removing intermediate container 2952ba563006 Step 3/5 : RUN ls -lah /tmp/glib-2.52.1.tar.xz ---> Running in 9570826c1437 -rw------- 1 root root 7.4M Apr 8 06:24 /tmp/glib-2.52.1.tar.xz ---> 4335ecb50e2a Removing intermediate container 9570826c1437 Step 4/5 : RUN tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz ---> Running in e5a847dd0427 tar (child): xz: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now The command '/bin/sh -c tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz' returned a non-zero code: 2 

这里是我使用ADD时的输出:

 [...] # same output Step 4/5 : ADD /tmp/glib-2.52.1.tar.xz /tmp/ lstat tmp/glib-2.52.1.tar.xz: no such file or directory 

谢谢你的帮助!

总是仔细阅读输出提示:

 tar (child): xz: Cannot exec: No such file or directory 

您在处理xz压缩文件所需的映像中缺lessxz-utils软件包。 尝试:

 RUN apt-get install xz-utils && tar -C /tmp/ -xf /tmp/glib-2.52.1.tar.xz