It may happen that you have accidentally deleted your Dockerfile, or that you want to know how a Docker was built to learn from it. In this case it is useful to see what the Dockerfile looked like, which files have been modified or copied, and which packages have been installed.
With the command below you can easily view the Docker file of an image (run as root):
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage" dfimage -sV=1.36 nginx:latest
The above commands show the steps from the Dockerfile:
[email protected]:~# alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage" [email protected]:~# dfimage -sV=1.36 nginx:latest Unable to find image 'alpine/dfimage:latest' locally latest: Pulling from alpine/dfimage Status: Downloaded newer image for alpine/dfimage:latest latest: Pulling from library/nginx [..] Status: Downloaded newer image for nginx:latest Analyzing nginx:latest Docker Version: 20.10.7 GraphDriver: overlay2 Environment Variables |PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |NGINX_VERSION=1.21.5 |NJS_VERSION=0.7.1 |PKG_RELEASE=1~bullseye Open Ports |80 Image user |User is root Potential secrets: Dockerfile: CMD ["bash"] LABEL maintainer=NGINX Docker Maintainers <[email protected]> ENV NGINX_VERSION=1.21.5 ENV NJS_VERSION=0.7.1 ENV PKG_RELEASE=1~bullseye COPY file:65504f71f5855ca017fb64d502ce873a31b2e0decd75297a8fb0a287f97acf92 in / docker-entrypoint.sh COPY file:0b866ff3fc1ef5b03c4e6c8c513ae014f691fb05d530257dfffd07035c1b75da in /docker-entrypoint.d docker-entrypoint.d/ docker-entrypoint.d/10-listen-on-ipv6-by-default.sh COPY file:0fd5fca330dcd6a7de297435e32af634f29f7132ed0550d342cad9fd20158258 in /docker-entrypoint.d docker-entrypoint.d/ docker-entrypoint.d/20-envsubst-on-templates.sh COPY file:09a214a3e07c919af2fb2d7c749ccbc446b8c10eb217366e5a65640ee9edcc25 in /docker-entrypoint.d docker-entrypoint.d/ docker-entrypoint.d/30-tune-worker-processes.sh ENTRYPOINT ["/docker-entrypoint.sh"] EXPOSE 80 STOPSIGNAL SIGQUIT CMD ["nginx" "-g" "daemon off;"] [email protected]:~#
To keep it readable I've cut bits out of the output, but I suspect the idea is clear. This cannot be copied 1 on 1, but a Dockerfile can simply be rebuilt on the basis of this.