Dockerfile
is an instruction set to set up a new container. It looks like a BASH
script that serially runs all the mentioned commands. The commands are predefined by Dockerfile syntax.
Unlike BASH
script, Dockerfile runs and applies effects of a command to the output of the previous step. Each step of a Dockerfile creates, by default, a container which is kept hidden. You can list such ephemeral containers by running following command:
$ docker images -a
All containers with <none>
name are ephemeral.
Why Docker need Ephemeral Containers
- Each ephemeral container acts as a cached output of a step in the Dockerfile.
- Next container build would use the cached output instead of running the step again.
How it Works?
- Each step starting from the from base checks if the next step has cached output.
- The check is with the asked instruction and the instruction that was run by the cached output.
- If instructions do not match, the cache is invalidated. The step is built normally.
- To disable caching, provide the no-cache option.
$ docker build --no-cache ...