charliecloud
charliecloud copied to clipboard
`ch-image pull docker.io/...` fails
Fully specifing an image makes ch-image pull fail:
👍 bin/ch-image pull boutproject/release:4.2
pulling image: boutproject/release:4.2
requesting arch: amd64
manifest list: using existing file
warning: image is architecture-unaware
warning: requested arch is amd64; using --arch=yolo
manifest: using existing file
config: using existing file
layer 1/15: 256b176: using existing file
layer 2/15: 8709809: using existing file
layer 3/15: 986e6cb: using existing file
layer 4/15: 765c635: downloading: 83.5/83.5 MiB (100%)
layer 5/15: 700f4cb: downloading: 1.7/1.7 MiB (100%)
[...]
👍 bin/ch-image pull docker.io/boutproject/release:4.2
pulling image: docker.io/boutproject/release:4.2
requesting arch: amd64
error: not in registry: docker.io:443/boutproject/release:4.2
👎 # adding --arch=yolo doesn't help:
👎 bin/ch-image pull docker.io/boutproject/release:4.2 --arch=yolo
pulling image: docker.io/boutproject/release:4.2
requesting arch: yolo
error: not in registry: docker.io:443/boutproject/release:4.2
👎
I can reproduce it:
$ ch-image pull docker.io/boutproject/release:4.2
pulling image: docker.io/boutproject/release:4.2
requesting arch: amd64
error: not in registry: docker.io:443/boutproject/release:4.2
Adding -vvv reveals that the URL it tries for the manifest (https://docker.io:443/v2/boutproject/release/manifests/4.2) goes to a human-facing 404 error on the Docker website.
podman pull docker.io/boutproject/release:4.2 works, as does docker pull docker.io/boutproject/release:4.2.
These other tools know to translate docker.io into registry-1.docker.io. I don't know where that comes from; I didn't see anything in /etc/containers.
This still happens, though the error is different:
$ ch-image pull boutproject/release:4.2
[...]
done
$ ch-image pull docker.io/boutproject/release:4.2
pulling image: docker.io/boutproject/release:4.2
requesting arch: amd64
error: GET failed; expected status {401, 404, 200, 429} but got 403: Forbidden
trace: registry.py:580:request_raw, registry.py:539:request, registry.py:475:fatman_to_file, pull.py:177:fatman_load, pull.py:99:download, build_cache.py:1029:pull_eager, pull.py:38:main, ch-image:311:main