TGViewer
DevOps Portal | Linux DevOps Portal | Linux @loose_code · 13.1K subscribers
Post #1102 6.52K
Реверс-инжиниринг Docker-образа

Если вдруг потерялся Dockerfile от образа, который у тебя в проде, или просто хочется копнуть глубже и разобраться, как собирался образ под капотом — есть пара удобных тулзов, которые помогут вытянуть исходники и заодно прокачать понимание процесса билда.

Неудивительно, что сами эти утилиты — это тоже Docker-образы. Так что без лишних движений — запускай одну из команд ниже, и получишь восстановленную версию Dockerfile:

sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm dduvnjak/dockerfile-from-image $IMAGE_ID
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm laniksj/dfimage $IMAGE_ID
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify $IMAGE_ID


Где $IMAGE_ID — это ID нужного тебе образа, Dockerfile которого вы хотите восстановить

После выполнения получишь дамп с примерным содержимым Dockerfile. Все три утилиты (dockerfile-from-image, dfimage, dedockify) работают схожим образом: они анализируют слои, которые появились во время сборки. Каждая инструкция из Dockerfile потенциально создаёт слой (но не всегда). Единственное отличие в том, что первая написана на Ruby, а вторые две на Python.

Чтобы не возиться каждый раз с полной командой — можно завести алиас:
alias dedockify="sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify"


И потом просто запускать:
dedockify $IMAGE_NAME


Ещё есть полезный инструмент — dive. Он позволяет посмотреть, что именно лежит в слоях Docker-образа. Можно запускать как через контейнер, так и через бинарь. Удобно, если нужно отладить, что именно пошло не так в сборке.

alias dive="sudo docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"


Пример:
dive nginx:latest


Если хочешь прикрутить его в CI/CD пайплайн — просто добавь:
CI=true dive $IMAGE


👉 DevOps Portal
  • 👍 21
  • ❤ 6
More from @loose_code
  1. Oct 1, 202622 октября встречаемся в Москве: Kuber Conf уже совсем скоро! Что будет на конференции: –…
  2. Oct 1, 2026Обработка миллионов файлов – это та точка, где большинство распределённых систем хранения…
  3. Oct 1, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  4. Oct 1, 2026Docker 101: Как достучаться до контейнера без проброса порта Знали, что IP-адрес контейнер…
  5. Sep 30, 2026В этой статье разбирается, как спроектировать production-ready MCP-сервер для платформенны…
  6. Sep 30, 2026В этой статье объясняется, почему Ingress заменяют на Gateway API, за что на самом деле от…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →