Якщо зберігання повного виводу docker save
не є варіантом, ви можете використовувати конвеєри, щоб витягти з нього лише потрібний файл.
На жаль, оскільки вихід є «дьогтю тар», це може бути трохи ітераційним процесом.
Що я робив тоді, коли мені потрібно було витягти файл, було:
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 для кожного з них, поки не знайдете потрібний
Замініть текст великими літерами в командах вище на правильні назви зображень, контрольні суми та назви файлів для вашої справи.