mirror of
https://github.com/cirruslabs/tart.git
synced 2026-09-30 03:01:12 +02:00
* Use registry-1.docker.io for Docker Hub's docker.io host docker.io doesn't serve the registry API: https://docker.io/v2/ redirects to https://www.docker.com/, which URLSession follows, getting back an HTML page with HTTP 200. As a result, pushing fails with UnexpectedHTTPStatusCode("pushing blob (POST)", 200, ...), pulling fails to parse the manifest and "tart login docker.io" accepts any credentials, because ping() never gets an authentication challenge. Send the API requests for docker.io to registry-1.docker.io instead, while still using docker.io for the pushed image names and for the credentials lookup, so that credentials saved with "tart login docker.io" keep working. Fixes #1275 * Match docker.io case insensitively * Recognize Docker Hub with an explicit port * Parse the registry host once and keep it normalized Using the host exactly as specified for naming and credentials lookup changed the behavior for other registries too. For example, "127.0.0.1:05000" used to find credentials stored for "127.0.0.1:5000", but didn't anymore. Parse the URL once instead, take the normalized host and port from it like before, and only replace the URL's host with registry-1.docker.io for Docker Hub.