Можно ли извлечь 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
извлечь файлы из докера.
Есть проект 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 уже был установлен.