Можно ли извлечь Dockerfile из контейнера Docker

Я только начинаю с Docker, и было бы очень полезно иметь возможность увидеть файлы Docker, используемые для создания существующих образов Docker.

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

Есть ли способ извлечь Dockerfile или список команд, используемых для создания заданного образа Docker?

3 ответа

Решение

У тебя есть docker history <image> это очень полезно Он даже может быть использован для генерации dockerfile, если ни один из шагов не задействован в stdin.

Если шаг как STDIN, единственный способ узнать, что произошло, это сделать docker logs <container id parent>, но если у вас нет контейнера, вы не можете.

В настоящее время есть отладчик. Мы можем установить его с помощью команды pip.

pip install git+https://github.com/larsks/undocker/ 

и использовать

docker save IMAGE_NAME | undocker -i -o IMAGE_NAME 

извлечь файлы из докера.

https://github.com/larsks/undocker/

Есть проект dockerfile-from-image, который может помочь вам сделать это напрямую.

Для восстановления Dockerfile требуется одна команда CLI:

docker run -v /var/run/docker.sock:/var/run/docker.sock centurylink/dockerfile-from-image <IMAGE_TAG_OR_ID>

Нужно, чтобы Docker уже был установлен.

Другие вопросы по тегам