The container handler only caches blobs, but even those will not be available if the auth URL for Docker Hub is down.
In handleBlobDownload, getAuthToken is called unconditionally and if it fails, the proxy will respond with an error:
// Get auth token for upstream
token, err := h.getAuthToken(r.Context(), name, "pull")
if err != nil {
h.proxy.Logger.Error("failed to get auth token", "error", err)
h.containerError(w, http.StatusUnauthorized, "UNAUTHORIZED", "failed to authenticate")
return
}
Only on success will GetOrFetchArtifactFromURLWithHeaders be called, which can respond from cache.
Even besides this, a pull of a specific image digest will still fail, because while the blobs are cached, the manifests are not.
The container handler only caches blobs, but even those will not be available if the auth URL for Docker Hub is down.
In
handleBlobDownload,getAuthTokenis called unconditionally and if it fails, the proxy will respond with an error:Only on success will
GetOrFetchArtifactFromURLWithHeadersbe called, which can respond from cache.Even besides this, a pull of a specific image digest will still fail, because while the blobs are cached, the manifests are not.