Container image base change: symptoms, cause, and the test that catches it
A base image update changes libraries or users and the service fails to start.
Container image base change is documented by 3 accepted public reports from 3 organisations, 2 of them published in the last 5 years.
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (3 of 3 reports: availability)
Symptoms
User-visible
- CI jobs could not build images and failed with a DNS lookup error against 169.254.169.254:53 reporting no such host.[2]
- JavaScript runtime variants of some prebuilt CI images failed inside CI jobs.[3]
- The rebuilt runtime variant images were missing the user account that CI jobs expected.[3]
- Many of the rebuilt runtime variant images failed to start.[3]
- Existing containers with mounted volumes entered a boot loop after the image moved to a newer distribution base whose default user took the expected user id.[1]
Root causes
- stage: third-party The 24.0.7 release of the container-in-container image updated its base image. The new base moved the packet filter backend from the legacy backend at 1.8.9 to nf_tables at 1.8.10.[2]
- stage: infra The hosted runner infrastructure did not support nf_tables, so the 24.0.7 image failed to start there.[2]
- stage: third-party The upstream official JavaScript runtime image moved one of its tags from an older to a newer major release of its Linux distribution base.[3]
- stage: build The image build automation removed the upstream build file's FROM statement by pattern matching and appended the rest to its own build files. After the base change the pattern no longer matched, and multi-stage build support let the image build with an extra FROM statement.[3]
Public examples
- [1]Crafty Controller, 2025-01-20. Crafty Controller changed its Docker base image from ubuntu:22.04 to ubuntu:24.04 in release 4.4.5; the new image ships a default ubuntu user with UID 1000 that conflicted with the project's own non-root user, so existing containers with mounted volumes lost file access and entered a boot loop in versions 4.4.5 and 4.4.6 until 4.4.7 removed the shipped user. primary Docker Image 24.04 rebase - non-root user issue. (#521)
- [2]GitLab, 2023-12-15. The docker 24.0.7 image release updated its alpine base, which switched iptables to nf_tables; GitLab's SaaS runner infrastructure did not support nf_tables, so docker:24.0.7-dind failed to start and CI jobs could not build images until the upstream image was fixed. primary 2023-12-15: docker:24.0.7-dind failing to start on GitLab Runner (saas)
- [3]CircleCI, 2018-12-08. Docker moved the official Node images' carbon tag from a Debian Jessie base to a Debian Stretch base, CircleCI's image build automation then left an extra FROM statement in Node variants of its convenience images, and the rebuilt images were missing the circleci user and many failed to start in CircleCI jobs. primary Convenience Images Update: 2018.11.27 Node variants incident
Test classes that catch it
| Test class | Stage | Limitation | Basis |
|---|---|---|---|
| Integration tests | pre-deploy | A job that starts the new container-in-container image on a host with nf_tables support passes, because the image failed only on hosted runner infrastructure without that support. | by design analysis |
| Configuration and environment tests | pre-deploy | A check that the rebuilt image contains the expected user account catches the missing user, but it does not compare the image's packet filter backend with what the host kernel supports. | by design analysis |
| Canary and progressive delivery checks | post-deploy | A canary needs a staged rollout, and jobs that pulled the upstream 24.0.7 or latest tag received the new base directly with no rollout to stage. | by design analysis |
Risk
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (3 of 3 reports: availability)
| Accepted public reports | 3 |
|---|---|
| Published in the last 5 years | 2 |
| Impact stated: availability | 3 |
Pre-release checklist
- PR-01
- PR-02
- PR-03
- PR-04
- PR-05
- PR-06
- PR-07
First 30 minutes
- FM-01
- FM-02
- FM-03
- FM-04
- FM-05
- FM-06
- FM-07
Download the checklist
What catches this: catalogue entries
Listed because their own documentation or site names integration tests, configuration and environment tests, canary and progressive delivery checks on the verification date. Alphabetical. Not a recommendation.
Tools whose documentation names these test classes
- Argo Rollouts canary source verified 2026-10-21
- Flagger canary source verified 2026-10-21
- Flipt config source verified 2026-10-21
- GrowthBook config source verified 2026-10-21 canary source verified 2026-10-21
- Hoverfly integration source verified 2026-10-21
- Kayenta canary source verified 2026-10-21
- LaunchDarkly config source verified 2026-10-21 canary source verified 2026-10-21
- PostHog config source verified 2026-10-21
- Postman integration source verified 2026-10-21
- Serenity BDD integration source verified 2026-10-21
- Spinnaker canary source verified 2026-10-21
- Testcontainers integration source verified 2026-10-21
- TestNG integration source verified 2026-10-21
- Unleash config source verified 2026-10-21 canary source verified 2026-10-21
Providers whose site names these test classes
- andagon people GmbH integration source verified 2026-10-21
- Appmatics integration source verified 2026-10-21
- AQA Masters integration source verified 2026-10-21
- Cleverix integration source verified 2026-10-21
- Crestech Software Systems integration source verified 2026-10-21
- DeviQA integration source verified 2026-10-21
- Invensis Technologies integration source verified 2026-10-21
- Outpost QA integration source verified 2026-10-21
- Q-Centric GmbH integration source verified 2026-10-21
- QA Madness integration source verified 2026-10-21
- QA Mentor integration source verified 2026-10-21
- QAwerk integration source verified 2026-10-21
- Quality Island integration source verified 2026-10-21
- Soflab Technology integration source verified 2026-10-21
- SQA - Software Quality Assurance S.A. integration source verified 2026-10-21
- SunTec India integration source verified 2026-10-21
- TestFort integration source verified 2026-10-21
- Testhouse integration source verified 2026-10-21
- Testing IT integration source verified 2026-10-21
- TestMatick integration source verified 2026-10-21
- Testscenario integration source verified 2026-10-21
- Zoonou integration source verified 2026-10-21
Only on this page
Container image base change starts in the third-party stage in report [2] and in the build stage in report [3], not in the config stage. In report [2] and report [3], the trigger was an upstream base image update that the affected team did not release. In report [2], the new base of the container-in-container image moved the packet filter backend to nf_tables. In report [3], an official runtime image tag moved to a newer distribution base.
In report [2], the fault sat between the image and the host: the hosted runners did not support nf_tables, and the upstream fix falls back to the legacy backend when nf_tables is not available. In report [3], the base change broke the pattern match that removed the upstream FROM statement, and the follow-ups name pre-deployment testing of images and image building logic that is less sensitive to upstream changes.
Related incidents
- DNS change propagation outage A DNS or load balancer change sends traffic to the wrong target or nowhere.
- Autoscaling policy misconfigured A scaling change fails to add capacity or scales to zero under load.
- Dependency removed from registry A package or version is pulled from a registry and builds or deploys fail.
- Disk full from new log volume A logging change fills disks and services stop writing.
- Rolling deploy mixed versions Old and new versions serve traffic at once and disagree on a contract.
Questions
What causes container image base change?
In report [2], a new image base moved the packet filter backend to nf_tables, which the hosted runners did not support. In report [3], an upstream base change broke the build automation's FROM statement removal. In report [1], the new base image shipped a default user that took the user id the project's own non-root user expected.
What are the symptoms of container image base change?
CI jobs could not build images and failed with a DNS lookup error reporting no such host [2]. Rebuilt runtime variant images lacked the expected user account and many failed to start [3].
Why did tests not catch container image base change?
In report [2], the fault appeared only on hosted runner infrastructure without nf_tables support. Report [3] lists pre-deployment testing of images as a follow-up. In report [1], local tests on fresh containers had passed, but containers with existing mounted volumes failed.
Which test class catches container image base change, and what does it miss?
Integration tests, configuration and environment tests and canary checks are listed, all with the by-design label. A canary cannot stage an upstream tag that jobs pull directly.
Which public reports document container image base change?
Three primary reports from three organisations document it, published on 2018-12-08 [3], 2023-12-15 [2] and 2025-01-20 [1]. All three classify the impact as availability.
Should a team roll back or fix forward when container image base change happens?
Report [2] advised customers to pin the image to 24.0.6 until the upstream image shipped a fix. Report [3] patched most affected variants on 28 November and the rest on 29 November.
Release Incident Playbook (2026). Container image base change: symptoms, cause, and the test that catches it, content version 1.0.0. https://releasefailures.com/incidents/container-image-base-change/. Accessed 2026-10-21.