É possível gerar um Dockerfile a partir de uma imagem? Eu quero saber por dois motivos:
Posso baixar imagens do repositório, mas gostaria de ver a receita que as gerou.
Eu gosto da idéia de salvar instantâneos, mas, quando terminar, seria bom ter um formato estruturado para revisar o que foi feito.
image
repository
docker
user1026169
fonte
fonte
Respostas:
Atualizar:
Citação do comentário de @ aleung:
centurylink/dockerfile-from-image
não funciona com a nova versão docker. Este funciona para mim:hub.docker.com/r/chenzj/dfimage
Você pode.
Primeira maneira
Aqui está o exemplo para gerar o Dockerfile a partir de uma imagem existente
selenium/node-firefox-debug
Segunda via
Aqui você não precisa puxar a imagem para local e nenhum comando precisa ser executado.
Use a imagem acima como exemplo, você pode obter comandos do Dockerfile através do URL abaixo:
https://imagelayers.io/?images=selenium%2Fnode-firefox-debug:latest
Aguarde um pouco, haverá duas janelas, a janela para cima lista as camadas, a janela para baixo lista o comando no Dockerfile
O formato do URL é:
De fato, o imagelayers.io é construído por
Centurylink
fonte
Para entender como uma imagem do Docker foi criada, use o
docker history --no-trunc
comandoVocê pode criar um arquivo de janela de encaixe a partir de uma imagem, mas ele não conterá tudo o que você deseja entender completamente como a imagem foi gerada. Razoavelmente, o que você pode extrair é as partes MANUTENÇÃO, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD e ONBUILD do dockerfile.
O script a seguir deve funcionar para você:
Uso isso como parte de um script para reconstruir contêineres em execução como imagens: https://github.com/docbill/docker-scripts/blob/master/docker-rebase
O Dockerfile é principalmente útil se você deseja reembalar uma imagem.
O que você deve ter em mente é que uma imagem do docker pode realmente ser apenas o backup do tar de uma máquina real ou virtual. Fiz várias imagens do docker dessa maneira. Até o histórico da compilação mostra como importar um arquivo tar enorme como o primeiro passo na criação da imagem ...
fonte
Error response from daemon: page not found
De alguma forma, eu absolutamente perdi o comando real na resposta aceita, então aqui está novamente, um pouco mais visível em seu próprio parágrafo, para ver quantas pessoas são como eu
fonte
ub.docker.com/r/chenzj/dfimage
? É ainda uma resposta mais recente.docker history
imprime as linhas do Dockerfile em uma ordem inversa e solta asRUN
instruções (você obtém apenas o comando em si, não oRUN
keyworkd na frente dele) e outras coisas, então você precisa editá-lo manualmente para obter um Dockerfile montável. Essa outra ferramenta pode fazer essa edição automaticamente para você (eu não tentei, então não sei.)Uma solução bash:
Explicações passo a passo:
Exemplo:
fonte
Não é possível neste momento (a menos que o autor da imagem inclua explicitamente o Dockerfile).
No entanto, é definitivamente algo útil! Há duas coisas que ajudarão a obter esse recurso.
fonte
Atualizar dez 2018 para a resposta da BMW
fonte
Isso é derivado da resposta do @ fallino, com alguns ajustes e simplificações usando a opção de formato de saída para o histórico do docker . Como o macOS e o Gnu / Linux têm diferentes utilitários de linha de comando, uma versão diferente é necessária para o Mac. Se você precisar apenas de um ou de outro, basta usar essas linhas.
fonte
abaixo está a saída do comando dfimage: -
$ dfimage 0f1947a021ce
Nó FROM: 8 WORKDIR / usr / src / app
Arquivo COPY: e76d2e84545dedbe901b7b7b0c8d2c9733baa07cc821054efec48f623e29218c in ./
Instalação RUN / bin / sh -c npm
Dir. COPY: a89a4894689a38cbf3895fdc0870878272bb9e09268149a87a6974a274b2184a em.
EXPOSIÇÃO 8080
CMD ["npm" "start"]
fonte