Use v2 registries.conf format - #14240
Conversation
Replace legacy [registries.search] schema with the v2 key unqualified-search-registries when writing /etc/containers/registries.conf. This makes the file compatible with skopeo >= 1.8 (which rejects the old v1 schema) and preserves docker.io and quay.io as search registries.
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates Ubuntu image build script to write a containers registries configuration compatible with newer container tooling (notably skopeo).
Changes:
- Replace legacy v1
registries.confschema with v2unqualified-search-registriesformat. - Add inline documentation and an upstream reference explaining the change.
| printf "[registries.search]\nregistries = ['docker.io', 'quay.io']\n" | tee /etc/containers/registries.conf | ||
| # Write registries.conf in v2 format; skopeo >= 1.8 rejects the legacy v1 schema | ||
| # (see https://github.com/containers/image/blob/main/docs/containers-registries.conf.5.md) | ||
| printf 'unqualified-search-registries = ["docker.io", "quay.io"]\n' | tee /etc/containers/registries.conf |
There was a problem hiding this comment.
Run echo *** | skopeo login -u username --password-stdin ghcr.io
echo *** | skopeo login -u username --password-stdin ghcr.io
shell: bash --noprofile --norc -e -o pipefail {0}
env:
COVERITY_INSTALL_DIR: /opt/coverity
WORKSPACE: /__w/edge-linux-github-builds/edge-linux-github-builds
time="2026-06-11T12:02:58Z" level=fatal msg="get credentials: loading registries configuration "/etc/containers/registries.conf": registries.conf must be in v2 format but is in v1"
Error: Process completed with exit code 1. - due to this issue made the changes.
418476a doesn't work as expected because even with updated packages of podman/skopeo the registry.conf have v1 content, after debugging it on the runner looks like following package owns that file which suppose to have updated config file but looks like due to runner config it is changed to old one (v1) so this is bug on runner images side. ``` $ dpkg -S /etc/containers/registries.conf golang-github-containers-image: /etc/containers/registries.conf $ apt policy golang-github-containers-image golang-github-containers-image: Installed: 5.38.0+ds2-2 ``` - https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/install-container-tools.sh#L30-L31 - actions/runner-images#14240
418476a doesn't work as expected because even with updated packages of podman/skopeo the registry.conf have v1 content, after debugging it on the runner looks like following package owns that file which suppose to have updated config file but looks like due to runner config it is changed to old one (v1) so this is bug on runner images side. ``` $ dpkg -S /etc/containers/registries.conf golang-github-containers-image: /etc/containers/registries.conf $ apt policy golang-github-containers-image golang-github-containers-image: Installed: 5.38.0+ds2-2 ``` - https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/install-container-tools.sh#L30-L31 - actions/runner-images#14240
Replace legacy [registries.search] schema with the v2 key unqualified-search-registries when writing /etc/containers/registries.conf. This makes the file compatible with skopeo >= 1.8 (which rejects the old v1 schema) and preserves docker.io and quay.io as search registries.
Description
New tool, Bug fixing, or Improvement?
Please include a summary of the change and which issue is fixed. Also include relevant motivation and context.
For new tools, please provide total size and installation time.
Related issue:
Check list