A failing readiness endpoint can coexist with up=1 until the separate metrics endpoint also fails.

Docker health and Prometheus up answer different questions

Docker health state and Prometheus’s up series are observations from different checks. A Compose healthcheck runs a command inside the application container. Prometheus independently scrapes a configured metrics endpoint and records whether that scrape succeeded. The two observations can legitimately disagree because an application may refuse useful work while still serving its metrics, or may serve work while its metrics endpoint is broken. ...

February 21, 2028 · 5 min · XB Field Notes
A copied input determines whether a later RUN result can be reused.

Docker rebuilds reuse recorded work, including stale work

Docker’s build cache stores results of build operations so a later build can reuse work whose relevant inputs still match. A cache hit does not mean the command ran again and produced identical output. It means the builder accepted an existing result. That distinction matters for package installation, generated timestamps, remote downloads, and any operation whose output could change without a corresponding change to its declared inputs. ...

February 20, 2028 · 4 min · XB Field Notes
Default arguments reach an executable, while wrapper process structure determines which process receives the stop signal.

ENTRYPOINT and CMD define defaults that operators can override

An image’s ENTRYPOINT and CMD contribute to the command used when a container is created. With an exec-form ENTRYPOINT, CMD commonly supplies default arguments appended to that entrypoint. Without an entrypoint, CMD can supply the executable and its arguments. These are startup defaults, not an enforcement boundary: an authorized operator can replace the entrypoint or arguments when creating a container. ...

October 3, 2027 · 5 min · XB Field Notes
A release label moves to a new artifact while an existing container and another label still refer to the old one.

Image tags can move while existing containers keep their image

An image tag is a readable name associated with an image reference. Unless a registry policy prevents reassignment, the same tag can later identify another artifact. Tags such as v1.4 and latest differ in naming convention, not in an inherent guarantee of immutability. Reproducing a deployment requires recording the artifact actually selected, together with the platform and runtime configuration that determined its behavior. ...

August 24, 2027 · 5 min · XB Field Notes
A project recreates its network while keeping its named data volume and stable service names.

A Compose project combines declarations with external inputs

Docker Compose turns service declarations into containers, networks, and storage attachments managed as a project. The file describes useful relationships: which image runs a service, how configuration reaches it, and which storage or network it uses. Reproducing a stack still depends on external inputs such as image availability, variable values, host capabilities, and existing data. A versioned file makes those inputs reviewable only when they are identified. ...

August 18, 2027 · 5 min · XB Field Notes
A stable dependency install remains reusable when frequently edited application code is copied afterward.

Copy dependency inputs before application code

Dockerfile order determines which earlier inputs an expensive build operation depends on. If application source is copied before dependency installation, changing that source can make the installation run again even when the dependency declaration is unchanged. Copying the dependency inputs first, installing them, and copying application code afterward creates a smaller dependency boundary that matches the work the installer actually needs. ...

August 17, 2027 · 5 min · XB Field Notes
A whiteout hides an earlier file from the merged view while its original layer still contains the bytes.

Deleting a file in a later image layer does not erase its bytes

Container image layers describe filesystem changes applied in order. A layer can add or replace a file, or record that an earlier path should disappear from the merged filesystem. That final view is what a normal container process sees, but it is not the complete history of bytes distributed with the image. Inspecting only the running container can therefore miss data retained in earlier layers. ...

August 16, 2027 · 5 min · XB Field Notes
A probe changes the health state without automatically restarting the application process.

Docker healthchecks report a state; recovery needs a consumer

A Docker HEALTHCHECK runs a configured command inside a container and records the result as health state. It adds an observation beyond whether the main process is running. The meaning of that observation depends on what the command tests: a process check, an HTTP response, or an application-specific readiness condition. Docker does not infer a universal readiness contract from the presence of the instruction. ...

July 5, 2027 · 5 min · XB Field Notes