Как отладить аннулирование кэша Docker?

15

У Docker есть кеш, и это здорово, но все, что я вижу в выводе "docker build", это либо:

---> Using cache

или вывод команды (что подразумевает, что она не использует кеш).

После одного шага в моем Dockerfile (КОПИЯ) он явно не использует кеш. Но я уверен, что ничего не изменилось в папке, которую он копирует. (Это наше приложение, и я сталкиваюсь с делом без кеширования, даже когда, например, дважды развертываюсь).

Есть ли способ заставить Докера сказать мне, что он изменил?

Я знаю, что Docker проверял временные метки для этого, но это было исправлено в Docker 1.8, и я здесь на Docker 1.9.x.

Timmay
источник
Пожалуйста, оставьте свойDockerfile
Джоэл Э Салас
1
@JoelESalas: я не понимаю вашу просьбу. Что-то настолько простое, что FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/продемонстрирует это. И я не собираюсь публиковать весь мой исходный код и инфраструктуру.
Тиммэй,
1
Кроме того, даже если просмотр Dockerfile может помочь, вопрос был в том, как мне диагностировать такие проблемы. Я не хочу, чтобы кто-то еще посмотрел мой конфиг и сказал мне ответ. Я хочу знать, какие инструменты существуют, чтобы помочь решить проблему.
Тиммэй,
Как вы уверены, что ничего не меняется в этом каталоге?
Джоэл Э Салас

Ответы:

4

Используйте бинарный поиск, с .dockerignore.

Добавьте половину ваших файлов .dockerignoreи создайте контейнер. Если он использует кеш для COPYшага, то вы знаете, что измененные файлы находятся в наборе, который вы проигнорировали, в противном случае вы знаете, что он находится в другой половине. Повторите этот тест с набором файлов, которые имеют изменения, пока это не будет только один файл / папка.

(Уважаемый lazyweb: придумайте способ расширить Docker, чтобы сделать это менее болезненным!)

Timmay
источник
2
Звучит нормально для отладки чего-то локально, спасибо. В моем случае я сейчас пытаюсь отладить кэш Docker в среде CI, и я немного расстроен тем, что не могу найти какой-либо способ заставить Docker строить более многословно = /
elias