Docker:处理tar文件时出错(退出状态1):设置pivot dir时出错:不是目录

时间:2016-10-21 09:49:47

标签: linux docker

我是Docker的新手,不知道导致此错误的原因或诊断方法。对此问题的任何具体帮助或首先检查诊断此类问题的提示将非常感谢!

我的Dockerfile:

FROM java:8

# Install maven
RUN apt-get update
RUN apt-get -y install maven

# Build foo
ENV curr /foo
WORKDIR $curr
ADD $curr/pom.xml /code/$curr
ADD $curr/src /code/$curr
RUN mvn package

当我尝试使用“docker build。”构建它时:

...
Step 7 : ADD $curr/src /code/$curr
Error processing tar file(exit status 1): Error setting up pivot dir: mkdir /var/lib/docker/devicemapper/mnt/236c9a1ac7edbd177f4718286f530cbba4ca275ec881be1e8fa3168e572843ac/rootfs/code/foo/.pivot_root774820419: not a directory

根据我的理解,mkdir在尝试创建目录时打印出来,但是已存在同名的文件,符号链接或套接字。但这似乎是Docker内部的一些步骤,更改调试级别并没有产生任何有用的输出。

2 个答案:

答案 0 :(得分:2)

您忘记了/中的/foo。在您的配置中,docker会将您的pom.xml设置为/code/foo,而不是我认为您想要的/code/foo/pom.xml。然后,它会尝试将您的来源添加到您的“pom.xml”中。发出此错误的文件。

尝试:

FROM java:8

# Install maven
RUN apt-get update
RUN apt-get -y install maven

# Build foo
ENV curr /foo/ # <-- missing /
WORKDIR $curr
ADD $curr/pom.xml /code/$curr
ADD $curr/src /code/$curr
RUN mvn package

答案 1 :(得分:0)

奇怪的是,当我们尝试使用 Dockerfile COPY 指令用同名文件夹覆盖现有文件时,Docker 也会引发此错误!

在我的例子中,Docker 像往常一样使用 flask 复制了名为 COPY /flask /usr/local/bin/flask 的应用程序文件夹(由 Openshift 构建器调用)并且一切正常,直到新版本的 Flask 删除了一个名为 { {1}} 在那个位置,导致相同的非特定错误消息:

flask