docker pull/push rejects IPv6 link-local literal with zone ID ([fe80::...%eth0]:5000/image): "invalid reference format"
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- docker, go
- Domain
- networking
Research direction
Start with the reference parser that rejects the IPv6 literal, using the reproduced docker pull command as the failing case. Then inspect the registry client’s URL construction for zone-ID handling and verify that the reference is accepted and the zone ID is percent-encoded when connecting to the registry.
Written by the indexing model from the issue text.
Description
Description
IPv6 address literals in image references are accepted since the fix from distribution/distribution#3489 (see #39033), e.g. [::1]:5000/image. However, a link-local IPv6 address with a zone ID is still rejected by the reference parser, so it is impossible to push/pull to a registry reachable only via IPv6 link-local.
Use case: several devices on a network with only static link-local IPv6. One device runs an OCI registry (registry:3, host networking, listening on *:5000), the others need to pull/push. Global/ULA addresses are not available.
The error comes from the reference parser, before any network connection is attempted. The registry itself is reachable over link-local (curl works, see below).
Reproduce
- Run a registry on the host: docker run -d --network host registry:3
- Run:
$ docker pull '[fe80::215:5dff:fea0:7253%eth0]:5000/test:latest'
invalid reference format
Expected behavior
The reference is accepted and the client connects to https://[fe80::...%25eth0]:5000/v2/ (zone ID percent-encoded per RFC 6874), or a documented alternative syntax exists for link-local registries.
docker version
29.8.1 / 29.8.1
docker info
docker info
Client: Docker Engine - Community
Version: 29.8.1
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.37.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v5.5.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 4
Running: 2
Paused: 0
Stopped: 2
Images: 8
Server Version: 29.8.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Additional Info
Suggested direction: allow an optional zone ID in the IPv6 literal of the reference domain regexp (e.g. [fe80::1%25eth0]) and make sure the registry client percent-encodes it when building the URL (Go's net/url and net.Dialer handle zone IDs). If out of scope, a docs note that link-local zone IDs are unsupported would help.
- Dominant language
- Go
- Stars
- 72.2k
- Forks
- 19.3k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 157
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from moby/moby
-
hack/make: copy_binaries fails when only /usr/local/bin/runc is presentPossibly taken @aryansk claimed this 80 days ago. Openkind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
moby/moby#53442 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
Bug in checking nDotsSet, should be nDotsSet and > 0, leads to failed container name resolution in DinDPossibly taken @NavneetNayak claimed this 115 days ago. Openkind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
moby/moby#53104 · 2 comments ·
Maintainers usually reply within 1 day
-
Endpoint (container) name is not passed to network-driver plugins at CreateEndpoint (unlike IPAM drivers, #50586)Possibly taken @claymore666 claimed this 150 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
Clarify target terminal for command examples in `docs/contributing/set-up-dev-env.md`May be free again A pull request for this issue was closed without being merged. Openkind/bug status/0-triage
Difficulty 1/5 Under an hour Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Default seccomp policy does not allow calling fanotify_init without CAP_SYS_ADMINPossibly taken @ychampion claimed this 123 days ago. Openarea/security/seccomp help wanted kind/enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
moby/moby#49756 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
Similar issues
-
model:sonnet runtime:claude security size:S
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FootprintAI/Containarium#3671 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 5 days
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
keyxmakerx/Chronicle#2190 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
llm-d/llm-d-inference-sim#897 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
inference-sim/inference-sim#2110 ·
Maintainers usually reply within 1 day