Skip to content

Docker image lifecycle management

Docker image lifecycle management encompasses the end-to-end workflow of creating, organizing, distributing, and maintaining container images. This process transforms source code and dependencies into portable, consistent artifacts that can be deployed across different environments^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Image Structure and Identification

A standard Docker image reference follows a specific naming structure to ensure unique identification and proper registry routing^[400-devops-06-kubernetes-k8s-paas-01docker.md].

The format is: ${registry_name}/${repository_name}/${image_name}:${tag_name}

For example: docker.io/library/alpine:3.10.1^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Acquisition and Retrieval

The lifecycle typically begins with retrieving existing images from a registry.

  • Searching: Use docker search to find available images in a registry^[400-devops-06-kubernetes-k8s-paas-01docker.md].
  • Pulling: Use docker pull <image>[:tag] to download a specific image to the local host^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Images are pulled in layers; subsequent updates or pulls only transfer the changed layers rather than replacing the entire image^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Local Management

Once images are on the local system, they can be inspected, modified, or removed^[400-devops-06-kubernetes-k8s-paas-01docker.md].

  • Listing: Use docker images or docker image ls to view locally stored images^[400-devops-06-kubernetes-k8s-paas-01docker.md].
  • Tagging: Use docker tag <source_image> <new_name>:<tag> to create a new alias for an image, often preparing it for a specific repository^[400-devops-06-kubernetes-k8s-paas-01docker.md].
  • Deletion: Use docker rmi <image_id> to remove an image. The -f flag can be used to force deletion^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Publishing

To share images with a team or deploy them to production, they must be pushed to a remote registry^[400-devops-06-kubernetes-k8s-paas-01docker.md].

  1. Login: Authenticate with the registry using docker login <registry_url>. Credentials are stored locally (e.g., in /root/.docker/config.json)^[400-devops-06-kubernetes-k8s-paas-01docker.md].
  2. Push: Upload the image using docker push <image_name>:<tag>. The image must be tagged with the registry prefix before pushing^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Automated Building (Dockerfile)

Rather than building images manually by committing changes to running containers, the standard lifecycle involves using a Dockerfile for reproducible builds^[400-devops-06-kubernetes-k8s-paas-01docker.md].

Key instructions include: * FROM: Defines the base image^[400-devops-06-kubernetes-k8s-paas-01docker.md]. * ENV: Sets environment variables^[400-devops-06-kubernetes-k8s-paas-01docker.md]. * ADD/COPY: Adds files from the host into the image^[400-devops-06-kubernetes-k8s-paas-01docker.md]. * RUN: Executes commands during the build process (e.g., installing software)^[400-devops-06-kubernetes-k8s-paas-01docker.md]. * CMD: Defines the default command to run when the container starts^[400-devops-06-kubernetes-k8s-paas-01docker.md].

The build process is executed via docker build -t <name>:<tag> .^[400-devops-06-kubernetes-k8s-paas-01docker.md].

  • [[Docker]]
  • [[Containerization]]
  • CI/CD

Sources

  • 400-devops-06-kubernetes-k8s-paas-01docker.md