Summary
We started this chapter by defining a normal Docker build and creating a simple Golang Docker image using the normal Docker build process. Then we observed the size of the resulting Docker image and discussed how a minimal-sized Docker image can speed up the build and deployment times for Docker containers and enhance security by reducing the attack surface.
We then used the builder pattern to create minimal-sized Docker images, utilizing two Dockerfiles
and a shell script in this process to create the image. We explored multi-stage Docker builds—a new feature introduced to Docker in version 17.05 that can help to eliminate the operational burden of having to maintain two Dockerfiles
and a shell script. Finally, we discussed the best practices for writing Dockerfiles
and how these best practices can ensure reduced build time, reduced image size, and increased security, while increasing the maintainability of the Docker image.
In the next chapter, we will...