Why Did Official Python Docker Images Disappear for an Afternoon?
We have all become accustomed to services on the internet being reliable and
available approximately 100% of the time. Many services obviously have outages,
recently GitHub, Cloudflare, Twitter, Facebook have all had widespread service
disruptions. Some apps affect downstream processes and services that rely on
them. This is a story about how I found the official Python images on Docker Hub
were missing for the
linux/amd64 architecture for an entire
The Stage is Set
Unfortunately, the official Python Docker Hub images don’t explicitly indicate which architecture they support. You would expect images for popular distributions such as Debian Buster would be available for both amd64 and ARM architectures.
On Saturday, July 13 I was working on some Dockerfiles that I use to test my Python library, and I couldn’t download the Buster image I had used in the past. The error I encountered was:
This support page indicated I could list all images for my architecture using a command similar to:
The only architecure returned for this image at the time was ARM. I worked around this problem by using the Alpine Linux image instead because I needed to get this testing completed. But that limitation struck me as strange. It kept gnawing at me, I couldn’t shake the feeling I must have been using incorrect command. A couple weeks later I decided to write a blog post about my experience. Funny enough as I was writing the very blog post you’re reading now, I found that the Buster images were in fact available once again.
Today the results returned from Docker Hub include amd64, ARM and others:
This is expected. But not what I found 2 weeks ago.
There was no outage reported on the Docker Hub status page for that day. It stands to reason then that the Python official Docker images were somehow not built properly for amd64 and other platforms during this window of time.
I would love to know how this occurred. I guess this reinforces how the folks
who say everything is
really have a point. At least I wasn’t using this in an automated process as
part of a CI pipeline or something. Although I also see that type of transient
service outage in my day job an just hit the
Restart Job button in Jenkins.