Если сохранение полного вывода docker save
не является вариантом, вы можете использовать конвейеры, чтобы извлечь из него только необходимый файл.
К сожалению, поскольку вывод представляет собой «tar of tars», это может быть слегка итеративный процесс.
Когда мне нужно было извлечь файл, я сделал следующее:
1) Определите, какую версию изображения интересующий вас файл изменил в последнее время (как вы это делаете, вероятно, зависит от вашего изображения), а также дату, когда он был создан / сохранен
2) Получить полное оглавление из вывода docker save
команды с помощью:
docker save IMAGE_NAME | tar -tvf -
3) Уточните layer.tar
файл (ы) в выходных данных этой команды, которые соответствуют дате изображения, которое вы определили на шаге 1. (Вы можете добавить, | grep layer.tar
чтобы просто показать эти файлы)
4) Извлеките этот layer.tar
файл в стандартный формат и получите его содержание:
docker save IMAGE_NAME | tar -xf - -O CHECKSUM_FROM_LIST/layer.tar | tar -tvf -
5) Убедитесь, что нужный файл указан в списке, и извлеките его, как только найдете имя:
docker save IMAGE_NAME | tar -xf - -O CHECKSUM_FROM_LIST/layer.tar | tar -xf - PATH/TO/YOUR/FILE
Если существует несколько layer.tar
файлов, соответствующих дате, которую вы ищете на шаге 2/3, вам может потребоваться повторить шаг 4 для каждого из них, пока вы не найдете правильный
Замените текст заглавными буквами в приведенных выше командах на правильные имена изображений, контрольные суммы и имена файлов для вашего случая.