Images are basically content addressed, it should be easy to create an ecosystem where when you first use an image you pin a copy on a private cache, instead of shuffling hundreds of GB around to each leaf node of your clusters.
This way cloud providers could still sell you a managed service that implements such a cache, but it would be used transparently instead of having to change your manifests and/or FROM stanzas.
Netflix iirc has implemented a registry that uses IPFS. But talking to the right registry still requires that the image name includes the hostname of the registry.
The docker daemon has a registry-mirrors option; you can already use that to point to https://mirror.gcr.io . But you can use it only to cache the special "docker hub" images.
This seems to be a self-inflicted problem. Docker the company possibly wanted to be in the critical path