SoFunction
Updated on 2025-03-09

Summary of various ways to get the latest image in Docker Compose

introduction

Docker images are the basis of Docker containers, and images contain all the files and dependencies required by the application. When we deploy applications in production or development environments, using the latest mirror ensures that we get the latest features and fixes. However, Docker-Compose does not automatically pull the latest image version by default, which may result in the use of outdated images, thus missing important updates.

To ensure that Docker-Compose always uses the latest image, we can take several approaches. The following will introduce these methods in detail, including their pros and cons and how they can be applied in different scenarios.

Use the --pull flag

The --pull flag is a simple and effective option provided by Docker-Compose. By adding the --pull flag when running the docker-compose up command, Docker-Compose can be forced to try to pull the latest version of all images specified in the file before starting the service.

The command using the --pull flag is as follows:

docker-compose up --pull always

This command forces the latest image to pull before starting the service and ensures that Docker is running the latest image version.

Pros and cons

advantage:

  • Simple and direct: No modification requiredFile, just add a flag to the command.
  • Make sure to be up to date: Always try to pull the latest images to reduce the risk of using outdated images.

shortcoming:

  • Not suitable for automation: If you need to automate this process, add it manually--pullThe sign may be inconvenient.
  • Possibly increase startup time: Try to pull the mirror every time you boot, which may increase startup time, especially when the network is slow.

Use the latest tag

In Docker,latestis a special label used to identify the latest stable version of the mirror. BySpecified image in the filelatestTags, Docker-Compose will pull the latest version of the image.

existIn the file, you can specify it in the following waylatestLabel:

services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"

When you rundocker-compose upWhen command, Docker-Compose will try to pull withlatestMirror of the latest version of the tag.

Pros and cons

advantage:

  • Convenient configuration: Just inSpecified in thelatestThe label is just suitable for continuous integration and continuous deployment (CI/CD) processes.
  • Easy to understand: Most users knowlatestThe meaning of the label is not easy to be confused when used.

shortcoming:

  • Caching issues: If you have pulled it once before withlatestA mirror of tags, Docker may use cached versions instead of pulling the latest version from the repository.
  • UnpredictabilitylatestThe content of a tag may change over time, and using it may introduce unstable factors.

Manually pull the latest image

In some cases, even iflatestTags may also not ensure that Docker-Compose uses the latest image. To solve this problem, we can manually pull the latest image and delete the old containers and images.

Here are the steps to manually pull the latest image:

  • Stop and delete existing containers and images:
docker-compose down --rmi all
  • Pull the latest image:
docker-compose pull
  • Rebuild and start the container:
docker-compose up -d --build

Pros and cons

advantage:

  • Completely updated: Make sure you are using the latest mirror version by deleting old images and containers.
  • High control: You have full control over when to pull and update the mirror, reducing unnecessary updates.

shortcoming:

  • Temporary operation: Each update requires manual execution of multiple commands, and there are many operation steps.
  • Service interruption: During the process of stopping and deleting containers, the service will be temporarily interrupted and may not be suitable for scenarios with high availability requirements.

Build the image locally

In some development scenarios, you may want to use the latest code instead of relying on mirrored versions in public repositories. By building the image locally, you can make sure Docker-Compose uses the latest code and dependencies.

To build the image locally and use it, you can use the following command:

docker-compose build --no-cache
docker-compose up

in,--no-cacheThe flag forces Docker to rebuild the image from scratch, ensuring that no cache is used.

Pros and cons

advantage:

  • Latest code: Through local build, you can use the latest code and dependencies to ensure that the content of the image is up to date.
  • Complete control: You have complete control over the build process, including the basic image used and the build parameters.

shortcoming:

  • Long build time: Local builds may take a long time, especially when the project depends on a lot.
  • Limited scope of application: Local builds are usually suitable for development and testing environments, not production environments.

Automatic updates using Watchtower

Watchtower is an automatic update tool that runs in Docker containers. It can monitor other Docker containers on the same host and automatically update them when there is a new version of the image.

To use Watchtower, you can choose one of two ways:

  • Run as a standalone container:
docker run -d --name watchtower -v /var/run/:/var/run/ containrrr/watchtower
  • Integrate Watchtower intoIn the file:
services:
  watchtower:
    image: containrrr/watchtower:latest
    volumes:
      - /var/run/:/var/run/
    command: --schedule "0 4 * * *" --cleanup --stop-timeout 300s

Pros and cons

advantage:

  • automation: Watchtower can automatically detect and update images, reducing the need for manual operations.
  • Flexible configuration: Update frequency and behavior can be adjusted through configuration file or command line parameters.

shortcoming:

  • Higher risk: Automatic updates may introduce unstable factors, especially if not adequately tested.
  • Complex monitoring: Additional monitoring and log management are required to ensure that problems during the update process can be discovered and resolved in a timely manner.

The above is the detailed content of various methods to obtain the latest images in Docker Compose. For more information about obtaining the latest images in Docker Compose, please follow my other related articles!