-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docker info reports an index server url as a registry url #3793
Comments
Yes, this is really confusing, and something that will be addressed at some point; there are plans to migrate some domains and update logic around this, but .. this may take some time. For a bit of background;
Unfortunately at some point, logic was implemented in the Docker Engine and Docker CLI code to map domains to their new locations (e.g. there's mapping for |
Thanks for the explanations. So the docker index used registry v1, which had a search route. Docker Hub uses registry v2 at |
The Docker Hub registry (currently) runs at Not sure if "obsolete" is the correct term to use for the index.docker.io search endpoints, but the OCI Specification does not include search functionality, leaving it up to implementations wether or not they provide a search feature (some of the public registries decided not to). Given that there's no standardised replacement for search, some registries still provide the v1 search, conforming to the Docker Registry V1 "search" specification (this includes Docker Hub and many self-hosted registries that deploy the open-source CNCF distribution registry (https://github.com/distribution/distribution). |
Okay, so Docker Index is the previous name of Docker Hub. They are names of the website that includes a docker registry (
At first glance it doesn't look like |
From the perspective of linking to image details on the Docker Hub web interface, there are two types of images: 1. Docker Official Images 2. all of the other images, regardless of their trustworthiness The Docker Official Images can be referenced several ways, either on the command line when passed to docker pull, or in the FROM instruction of a Dockerfile: * busybox * library/busybox * docker.io/busybox * docker.io/library/busybox Furthermore, over the years there have been several domains used for the official Docker Hub registry: * docker.io * index.docker.io * registry-1.docker.io * registry.hub.docker.com The goal here is handling each possible case, which makes Docker Hub images more complex than the handling for other registries. It also makes the case block's '*' (default) case harder to find in the sequence of glob expressions, but this is necessary to avoid repeating the parsing or adding another helper function. Reference: docker/hub-feedback#2113 docker/cli#3793 Signed-off-by: Dan Christensen <opello@opello.org>
* style: Split long lines, follow .editorconfig Signed-off-by: Dan Christensen <opello@opello.org> * fix: Clarify why some sources are being excluded The explanation is also meant to remind anyone that sees it that the code could inadvertently remove a sources sequence entry that was intentionally added, because it can not tell. Signed-off-by: Dan Christensen <opello@opello.org> * fix: Comment the image-to-URL code Signed-off-by: Dan Christensen <opello@opello.org> * refactor: Use case instead of if-ladder This is a faithful move from the if-ladder to a case statement that preserves the existing behavior, with optimization to follow. The behavior of the function before and after this change is the same. Signed-off-by: Dan Christensen <opello@opello.org> * fix: Remove dead code No "container source" entry from description_list.md has a scheme. The values are parsed from the Dockerfiles and would not have one there either. Signed-off-by: Dan Christensen <opello@opello.org> * fix: tccr.io image links Parse the tccr.io prefix specifically instead of just checking for the substring tccr which could result in a false positive. The generated link was also going to point to a truecharts subdirectory under mirror in the containers repository that does not exist. Signed-off-by: Dan Christensen <opello@opello.org> * fix: lscr.io image links Parse the lscr.io prefix specifically instead of just checking for the substring lscr which could result in a false positive. The generated link would also return a 404 because the web interface requires the image name to be passed in the query string. Signed-off-by: Dan Christensen <opello@opello.org> * fix: gcr.io image links Parse the gcr.io prefix specifically instead of just checking for the substring gcr which could result in a false positive. Signed-off-by: Dan Christensen <opello@opello.org> * feat: Do not add sources if no prefix is created The intent of this code is to generate URLs to be included in documentation to attribute inputs to the chart. If a publicly accessible URL can not be generated from the image name it makes sense to not add anything and instead rely on a manual edit to the Chart.yaml. Signed-off-by: Dan Christensen <opello@opello.org> * fix: Disable azurecr.io image links There does not seem to be a general purpose web index to the azurecr.io hosted images. Signed-off-by: Dan Christensen <opello@opello.org> * feat: Disable mcr.microsoft.com image links Signed-off-by: Dan Christensen <opello@opello.org> * fix: public.ecr.aws image links Parse the public.ecr.aws prefix specifically instead of just checking for the substring public.ecr.aws which could result in a false positive. Signed-off-by: Dan Christensen <opello@opello.org> * fix: Disable ocir.io image links There does not seem to be a general purpose web index to the ocir.io hosted images. Signed-off-by: Dan Christensen <opello@opello.org> * refactor: Add Docker Hub hosted image links From the perspective of linking to image details on the Docker Hub web interface, there are two types of images: 1. Docker Official Images 2. all of the other images, regardless of their trustworthiness The Docker Official Images can be referenced several ways, either on the command line when passed to docker pull, or in the FROM instruction of a Dockerfile: * busybox * library/busybox * docker.io/busybox * docker.io/library/busybox Furthermore, over the years there have been several domains used for the official Docker Hub registry: * docker.io * index.docker.io * registry-1.docker.io * registry.hub.docker.com The goal here is handling each possible case, which makes Docker Hub images more complex than the handling for other registries. It also makes the case block's '*' (default) case harder to find in the sequence of glob expressions, but this is necessary to avoid repeating the parsing or adding another helper function. Reference: docker/hub-feedback#2113 docker/cli#3793 Signed-off-by: Dan Christensen <opello@opello.org> * feat: ghcr.io image links Signed-off-by: Dan Christensen <opello@opello.org> * feat: quay.io image links Signed-off-by: Dan Christensen <opello@opello.org> * feat: Do not generate likely-bad links By assuming image names that are not handled by other cases are Docker Hub images there is a risk of generating bad links. Minimize this risk by not generating a link if the image name for a Docker Hub link has two slashes. This is a case that should not happen and would likely mean an unsupported registry is being used. There is still a risk of an unsupported registry being treated as Docker Hub and an invalid link being generated. That case is if the domain and image name is example.com/busybox where there is only one slash. Signed-off-by: Dan Christensen <opello@opello.org> * refactor: Sort cases Sort the cases from longest to shortest prioritizing any case with a suffix only glob over any case with a prefix glob. The intention is to avoid having a case that can not be reached. The combined Docker Hub and default case is last. It might make sense to split the default case handling off but it does not seem to be a problem right now. Signed-off-by: Dan Christensen <opello@opello.org> --------- Signed-off-by: Dan Christensen <opello@opello.org>
Oh, good call, I may be mistaken and I opened a PR to remove this field from the default |
Description
https://docs.docker.com/engine/api/v1.41/#tag/System/operation/SystemInfo
I don't see how
index.docker.io
is used for authentication. Can you possibly provide steps to reproduce and some links to the source code?From what I can see
docker
usesregistry-1.docker.io
to contact the registry. And what's used for authentication isauth.docker.io
:Not to mention that to get the
registry-1.docker.io
value I had to consult the source code.It's not clear if there's a difference between a
docker
registry and an index server.Here the domain is called legacy.
This whole thing is pretty damn confusing. Particularly the fact that
docker info
calls an index server a registry and provides a broken URL.Reproduce
Expected behavior
docker info
shouldn't confuse users. It should be documented what's the difference between an index server and a docker registry. And if there's a difference,docker info
shouldn't call an index server a registry. Especially provide a broken URL. Is it even used these days?docker version
docker info
Additional Info
No response
The text was updated successfully, but these errors were encountered: