I don't really understand how .dockerignore works.Is it intended to be used like the following:

  • First I add somethings in it such as *.md
  • Then I put this .dockerignore into the container.
  • After that I run and enter the container.
  • I create a new file named test.md and commit this container to the new image.
  • The new image will ignore this file so it will not be in the new container.
3

Best Answer


Before explaining the use of the .dockerignore file we must spend a little time understanding what docker build does.

Docker build. What does happen when I build an image ?

When you build an image from a Dockerfile using the docker build command the daemon will create a context. That context contains everything in the directory you executed the command in.

What does .dockerignore do and why use it?

The .dockerignore file allows you to exclude files from the context like a .gitignore file allow you to exclude files from your git repository.

It helps to make build faster and lighter by excluding from the context big files or repository that are not used in the build.

docker build has a step where it tars up the CONTEXT directory and sends it to the docker daemon. This is because the daemon and client might not exist on the same server.

The tar and network send is why unused files can slow down the build. These happen even if the daemon runs locally.

Then I put this .dockerignore in container.

nope, don't do that. The .dockerignore file is meant to be in the same directory as your Dockerfile and is intended to speed up the docker build command by excluding at build time some of the files that won't be used to build the docker image.