¿Es posible generar un Dockerfile a partir de una imagen? Quiero saber por dos razones:
Puedo descargar imágenes del repositorio pero me gustaría ver la receta que las generó.
Me gusta la idea de guardar instantáneas, pero una vez que haya terminado, sería bueno tener un formato estructurado para revisar lo que se hizo.
image
repository
docker
usuario1026169
fuente
fuente
Respuestas:
Usted puede.
Extraerá automáticamente la imagen del acoplador de destino y la exportará
Dockerfile
. El parámetro-sV=1.36
no siempre es obligatorio.Referencia: https://hub.docker.com/repository/docker/alpine/dfimage
a continuación se muestra la respuesta anterior, ya no funciona.
fuente
Para comprender cómo se creó una imagen acoplable, use el
docker history --no-trunc
comandoPuede crear un archivo acoplable a partir de una imagen, pero no contendrá todo lo que desee para comprender completamente cómo se generó la imagen. Razonablemente, lo que puede extraer son las partes MAINTAINER, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD y ONBUILD del dockerfile.
El siguiente script debería funcionar para usted:
Lo uso como parte de un script para reconstruir contenedores en ejecución como imágenes: https://github.com/docbill/docker-scripts/blob/master/docker-rebase
El Dockerfile es principalmente útil si desea poder reempaquetar una imagen.
Lo que hay que tener en cuenta es que una imagen acoplable en realidad puede ser solo el respaldo de alquitrán de una máquina real o virtual. He hecho varias imágenes de docker de esta manera. Incluso el historial de compilación me muestra la importación de un gran archivo tar como primer paso para crear la imagen ...
fuente
Error response from daemon: page not found
De alguna manera me perdí absolutamente el comando real en la respuesta aceptada, así que aquí está de nuevo, un poco más visible en su propio párrafo, para ver cuántas personas son como yo
fuente
ub.docker.com/r/chenzj/dfimage
? Es incluso una respuesta más reciente.docker history
imprime las líneas de Dockerfile en orden inverso y deja caer lasRUN
instrucciones (solo obtienes el comando en sí, no elRUN
teclado delante) y otras cosas, por lo que debes editarlo manualmente para llegar a un Dockerfile edificable. Esa otra herramienta puede hacer esto editando de forma automática para usted (yo no lo probamos, así que no sé.)Una solución bash:
Explicaciones paso a paso:
Ejemplo:
fuente
No es posible en este momento (a menos que el autor de la imagen incluya explícitamente el Dockerfile).
Sin embargo, definitivamente es algo útil. Hay dos cosas que ayudarán a obtener esta función.
fuente
Actualización de diciembre de 2018 a la respuesta de BMW
fuente
Esto se deriva de la respuesta de @ fallino, con algunos ajustes y simplificaciones mediante el uso de la opción de formato de salida para el historial del acoplador . Como macOS y Gnu / Linux tienen diferentes utilidades de línea de comandos, es necesaria una versión diferente para Mac. Si solo necesita uno u otro, puede usar esas líneas.
fuente
a continuación se muestra la salida del comando dfimage: -
$ dfimage 0f1947a021ce
DESDE nodo: 8 WORKDIR / usr / src / app
COPIAR archivo: e76d2e84545dedbe901b7b7b0c8d2c9733baa07cc821054efec48f623e29218c in ./
RUN / bin / sh -c npm install
COPY dir: a89a4894689a38cbf3895fdc0870878272bb9e09268149a87a6974a274b2184a in.
EXPOSE 8080
CMD ["npm" "inicio"]
fuente