Как заглянуть внутрь Docker-образа без его запуска
Необходимость заглянуть внутрь образа контейнера без его запуска возникает довольно часто при отладке или аудите безопасности. Существует несколько способов реализации этой задачи, каждый из которых имеет свои особенности.
Самый простой и распространенный метод — использование команд docker create и docker export:
docker create --name tmp my-image
docker export tmp | tar -C rootfs -xf -
Данная комбинация позволяет быстро извлечь файловую систему, максимально приближенную к той, с которой стартовал бы контейнер. В большинстве случаев этого вполне достаточно для базового анализа содержимого.
Однако, если ваша задача требует получения полноценного rootfs с точным сохранением прав доступа, владельцев файлов и расширенных атрибутов (xattrs), таких как capabilities или sticky bits, стандартные инструменты могут оказаться недостаточно надежными. В таких ситуациях процесс усложняется из-за особенностей работы слоев Docker и файловых систем.
Более детальный разбор практических методов, а также описание всех подводных камней, с которыми вы можете столкнуться при извлечении образов, доступны в нашей статье: Extracting container image filesystem.