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 searchto 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 imagesordocker image lsto 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-fflag 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].
- 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]. - 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].
Related Concepts¶
- [[Docker]]
- [[Containerization]]
- CI/CD
Sources¶
- 400-devops-06-kubernetes-k8s-paas-01docker.md