#linux #docker
#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, и изменение уровня отладки не привело к какому-либо полезному результату.
Комментарии:
1. Я не вижу ни одного
mkdir
в вашем Dockerfile, поэтому при попытке скопировать в несуществующие каталоги происходит сбой
Ответ №1:
Вы забыли /
в /foo
. В вашей конфигурации docker поместит ваш pom.xml
as /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
Ответ №2:
Как ни странно, Docker выдает эту ошибку также, когда мы пытаемся перезаписать существующий файл одноименной папкой, используя инструкцию Dockerfile COPY
!
В моем случае вызываемая папка приложения flask
копировалась Docker (вызывается разработчиком Openshift), как обычно, с помощью COPY /flask /usr/local/bin/flask
и все работало нормально, пока новая версия Flask не удалила файл с именем flask
в этом самом месте, что привело к тому же неспецифическому сообщению об ошибке:
error: build error: Error processing tar file(exit status 1): Error setting up pivot dir: mkdir /var/lib/docker/overlay2/40221e791ab4c4d6d3610948703fe0eeb46618d6444a32e1bedcde3908ec5c7f/merged/usr/local/bin/flask/.pivot_root034225158: not a directory