Estimate docker push duration to a registry based on image size and upload speed.
Docker push only uploads layers not already present in the registry. Push time = (compressedSize × layersToUpload/totalLayers) / uploadBandwidth + overhead. Keeping shared base layers constant means only your application layer changes need uploading.
Push Time
pushTime = (imageSize × newLayers / totalLayers) / (uploadBandwidth / 8) + overhead
Pushes benefit greatly from layer deduplication — if most layers already exist in the registry from previous pushes, only the changed layers need uploading, which can be a tiny fraction of the total image.
CI runners often have high-bandwidth connections to nearby registries (same cloud region), and using layer caching in CI means incremental builds push only 1-2 changed layers.