✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Service Image Config

Service Image Config defines how Docker services are built, deployed, and managed through configuration files that dictate their behavior and dependencies

Service image config covers the various ways the image field can be used within a Compose service — referencing an existing image outright, or naming the result of a local build — together with related considerations like tagging and registry sourcing.

Image Used Without a Build

For a service representing an off-the-shelf dependency, image alone specifies exactly which existing image to pull and run.

services:
  db:
    image: postgres:16

Image Combined With Build

For a service representing custom application code, image names the result of the accompanying build configuration, giving that built image a specific, referenceable tag.

services:
  api:
    build: .
    image: myapi:2.3.0

Why Explicit Tagging Matters for Either Case

Whether referencing an existing image or naming a locally built one, specifying an explicit, meaningful tag (rather than relying on an implicit or mutable latest) makes the actual version in use clear and consistent.

services:
  db:
    image: postgres:16.2
  api:
    build: .
    image: myapi:2.3.0

Referencing an Image From a Private Registry

An image hosted in a private registry is referenced by including that registry's address as part of the image name.

services:
  api:
    image: registry.example.com/myteam/myapi:2.3.0
docker login registry.example.com
docker compose pull api

Authentication with the private registry may be required before Compose can successfully pull an image referenced this way.

Why Service Image Config Matters

A clear understanding of how image behaves both with and without an accompanying build field, along with sound tagging and registry referencing practices, is foundational to ensuring each service in a Compose application runs exactly the intended version of its corresponding image.