Можно ли сгенерировать Dockerfile из изображения? Я хочу знать по двум причинам:
Я могу скачать изображения из репозитория, но хотел бы увидеть рецепт, который их сгенерировал.
Мне нравится идея сохранения снимков, но как только я это сделаю, было бы неплохо иметь структурированный формат для просмотра того, что было сделано.
image
repository
docker
user1026169
источник
источник
Ответы:
Ты можешь.
Это автоматически вытянет целевой образ докера и экспортирует его
Dockerfile
. Параметр-sV=1.36
не всегда обязателен.Ссылка: https://hub.docker.com/repository/docker/alpine/dfimage
ниже старый ответ, он больше не работает.
источник
Чтобы понять, как был создан образ докера, используйте
docker history --no-trunc
команду.Вы можете создать файл Docker из изображения, но он не будет содержать всего, что вы хотели бы полностью понять, как было сгенерировано изображение. Разумно то, что вы можете извлечь, это части Dockerfile: MAINTAINER, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD и ONBUILD.
Следующий скрипт должен работать на вас:
Я использую это как часть скрипта для восстановления запущенных контейнеров в виде изображений: https://github.com/docbill/docker-scripts/blob/master/docker-rebase
Dockerfile в основном полезен, если вы хотите иметь возможность повторно упаковать изображение.
Необходимо помнить, что образ докера может быть просто резервной копией реального или виртуального компьютера. Я сделал несколько изображений докера таким образом. Даже история сборки показывает, что я импортировал огромный tar-файл как первый шаг в создании образа ...
источник
Error response from daemon: page not found
Я почему-то абсолютно пропустил фактическую команду в принятом ответе, поэтому здесь она снова, немного более заметна в своем собственном абзаце, чтобы увидеть, сколько людей похоже на меня
источник
ub.docker.com/r/chenzj/dfimage
? Это даже более свежий ответ.docker history
печатает строки Dockerfile в обратном порядке, и он отбрасываетRUN
инструкции (вы получаете только саму команду, а неRUN
keyworkd перед ней) и другие вещи, так что вам нужно отредактировать ее вручную, чтобы получить готовый Dockerfile. Этот другой инструмент может сделать это редактирование автоматически для вас (я не пробовал, поэтому я не знаю.)Решение Bash:
Пошаговые пояснения:
Пример:
источник
На данный момент это невозможно (если автор изображения явно не включил Dockerfile).
Тем не менее, это определенно что-то полезное! Есть две вещи, которые помогут получить эту функцию.
источник
Обновление декабря 2018 года до ответа BMW
источник
Это вытекает из ответа @ fallino, с некоторыми корректировками и упрощениями при использовании опции формата вывода для истории докера . Поскольку macOS и Gnu / Linux имеют разные утилиты командной строки, для Mac необходима другая версия. Если вам нужен только один или другой, вы можете просто использовать эти строки.
источник
ниже вывод команды dfimage: -
$ dfimage 0f1947a021ce
ОТ узла: 8 WORKDIR / usr / src / app
Файл COPY: e76d2e84545dedbe901b7b7b0c8d2c9733baa07cc821054efec48f623e29218c in ./
RUN / bin / sh -c npm установить
COPY dir: a89a4894689a38cbf3895fdc0870878272bb9e09268149a87a6974a274b2184a в.
ЭКСПОЗИЦИЯ 8080
CMD ["npm" "start"]
источник