Привет!



Однажды Компания А попросила Компанию Б разработать web-приложение. Компания Б согласилась и наняла Подрядчика для выполнения части работ. Web-приложение было разработано и в момент поддержки выяснилось, что Подрядчик использовал некоторый собственно-изготовленный образ, а вот Dockerfile для него приложить забыл…



К чему все это?



В статье описан подход к reverse-engineering образа контейнера для воссоздания Dockerfile. А с примером, описанным выше, может встретиться каждый.



Что сделал автор:

🍭 Сохранил образ в tar-формате, распаковал

🍭 Используя JQ получил информацию из manifest.json

🍭 Провел послойный анализ образа через .history

🍭

🍭 Получил данные, которые позволят воссоздать Dockerfile!



Трудно сказать, насколько подобный образ применим для «массового использования», однако для выполнения локальных задач (если кто-то забыл/удалил/не отдал/иное Dockerfile) описанный подход вполне возможен ☺️



P.S. Preview не работает, поэтому дублируем ссылку: https://theartofmachinery.com/2021/03/18/reverse_engineering_a_docker_image.html