Реверсим Dockerfile
Представим, что у нас пропал Dockerfile, а остался только собранный образ. Ну или скачал ты готовый образ с Docker Hub и хочется узнать, как его собирали.
Как произвести реверсинг?
Для примера соберём образ из такого Dockerfile:
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]
Запускаем сборку образа:
docker build -t pythoner:latest .
Теперь нативными командами вытягиваем начинку, без всяких Dive и т. п. Но придётся немного глазками пробежаться.
docker history pythoner:latest
Результат команды выведет протокол сборки плюс команды. Но команды будут урезанными. Для того чтобы получить полный листинг, делаем так:
docker history --no-trunc pythoner:latest
Вылетит простыня, но при сноровке и насмотренности всё вполне предсказуемо.
В идеале совмещаем с Dive, смотрим окно Layers и стрелками перемещаемся по слоям, а там уже видно все команды, которые выполнялись из Dockerfile.
Dockerfile.А файлы, которые были добавлены через COPY, вытягиваем себе на локальную машину так:
docker cp <container-id>:/etc/nginx/nginx.conf /tmp
Как вариант, можешь воспользоваться анализаторами, например Trivy.
Trivy — это комплексный и универсальный сканер безопасности для Docker-образов. Заодно ещё безопасность своих решений можно позырить и приуныть.
А ещё есть клёвая поделка для этого на Python, но про неё закину уже завтра.
Вот такие пироги, если знаешь ещё способы — пиши в комменты, будет полезно!








Комментарии