In this post, I’m going to address a few often-overlooked concepts that will help with optimizing the Docker image development and build process.
Docker images are used as the primary image in the Docker executor. They are the blueprints for containers, providing the instructions for how a container is spawned. In this post, I’m going to address a few often-overlooked concepts that will help with optimizing the Docker image development and build process.
Let’s start with a brief description of the Docker build process. It is a process triggered by running the docker build command using the Docker CLI tool.
The docker build
command builds a Docker image based on the instructions specified in a file known as a Dockerfile. The Dockerfile is a text document that contains all the ordered commands a user would call on the command line to assemble an image.
A Docker image consists of read-only layers. Each layer represents a Dockerfile instruction. The layers are stacked, and each one is a delta of the changes from the previous layer. I think of these layers as a form of cache. Updates are only made to the layers that change versus updating every layer on every change.
The example below depicts the contents of a Dockerfile:
Each instruction in this file represents a separate layer in a Docker image. Below is a brief explanation of each instruction:
FROM
creates a layer from the ubuntu:18.04
Docker imageCOPY
adds files from your Docker client’s current directoryRUN
builds your application with makeCMD
specifies what command to run within the containerThese four commands will create layers in Docker images when they are executed during the build process.
If you’re interested in learning more about images and layers, you can read about them here.
#cloud #docker #docker image #image building