Es posible extraer el Dockerfile de un contenedor docker


Estoy empezando con Docker, y sería muy útil poder ver los archivos Docker utilizados para crear imágenes docker existentes.

Incluso si la imagen se creó ejecutando comandos manualmente y luego confirmando una etiqueta, sería bueno poder ver cómo se creó la imagen, tanto para fines de aprendizaje como para seguridad.

¿Hay alguna forma de extraer un archivo acoplable o una lista de comandos utilizados para construir una imagen de docker dada?

 26
Author: mhvelplund, 2014-06-23

3 answers

Tienes docker history <image> que es muy útil. Incluso se puede usar para generar un dockerfile si ninguno de los pasos involucró stdin.

Si un paso como stdin, la única manera de saber lo que pasó sería hacer docker logs <container id parent>, pero si no tienes el contenedor, no puedes.

 30
Author: creack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-23 10:40:48

Ya está disponible undocker. Podemos instalarlo usando el comando pip.

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

Y use

docker save IMAGE_NAME | undocker -i -o IMAGE_NAME 

Para extraer los archivos de docker.

Https://github.com/larsks/undocker /

 12
Author: Dinesh VG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-25 14:18:11

Hay un proyecto dockerfile-from-image que podría ayudarte a hacerlo directamente.

Requiere un solo comando CLI para recuperar el Dockerfile:

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

Uno tiene que tener Docker ya instalado.

 3
Author: Artem Oboturov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-12 12:56:09