Docker Hub Alternatives: On the Lookout for a Container Image Repository for OSS
Tags: cloud, docker, containers, devops
Published: 2023-03-24 09:21:54

<!-- wp:paragraph -->
<p>As a leading containerization service, Docker has been particularly popular across the open-source ecosystem. However, its recent moves have proved controversial enough for some teams to seek Docker alternatives.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Its Q1 2023 announcement of sunsetting the free version of Docker Hub has caused quite a stir in the OSS ecosystem. The change would affect numerous projects and companies relying on them, including CAST AI.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While Docker has clarified its plans, the dust has yet to settle completely. Read on to learn more about the recent change and potential alternatives to Docker Hub.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"className":"wp-block-heading","anchor":"h-why-is-docker-hub-significant"} -->
<h2 class="wp-block-heading" id="h-why-is-docker-hub-significant">Why is Docker Hub significant?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docker Hub<sup>1</sup> is the world's largest container image repository. It comes with various content sources, such as container community developers, open source projects, and software vendors.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Docker Hub's free version – Free Team – lets users store, share, and access container images across public repositories. Premium plans also enable creating private repos and restricting content to specific user groups.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The Free Team plan has been particularly popular for open source images because of its business model. OSS initiatives usually scrape for funds, so they liked the ability to upload public images for free while the downloader covered the costs.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As a result, Docker Hub was a popular image repository choice for open source initiatives. While large OSS can strike a deal with enterprise image registries or get support from the likes of RedHat or Oracle, Free Team also attracted smaller projects.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"anchor":"what-happened-to-docker-hub-in-2023"} -->
<h2 class="wp-block-heading" id="what-happened-to-docker-hub-in-2023">What happened to Docker Hub in 2023?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Suddenly in March 2023, Docker announced plans to discontinue and delete all organizations using its repository's free version. The way the company communicated this message has caused quite an outcry.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Docker sent emails warning users that their accounts would be deleted after 30 days unless they switched to one of the paid subscriptions. This could potentially affect most open-source projects using Docker to host their images – and the deadline was nigh (April 14, 2023).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While the company has a provision for such projects under its open-source program<sup>2</sup>, it has reportedly not been of much help. The sign-up process isn’t fast and projects must satisfy a range of criteria. According to some accounts, processing applications sometimes takes even more than a year.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:quote {"className":"is-style-plain"} -->
<blockquote class="wp-block-quote is-style-plain"><!-- wp:paragraph -->
<p><strong>The announcement practically meant that OSS wishing to save their images would have to go from paying nothing to a few hundred dollars annually</strong>. With many OS initiatives having little to no funding and mainly depending on voluntary contributions, such short deadlines for switching simply didn't add up.&nbsp;</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Moreover, as many OSS have published images to Docker Hub in this way for years, the danger of cybersquatting the image and publishing malicious content became real.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A few days later, Docker apologized<sup>3</sup> for the lack of clarity in its message. It promised to only remove images if their maintainers decide to delete them and committed to assigning more staff to review requests for OSS support. The company also stated that users with a Free Team organization could migrate to a Personal user account.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While this message reassured many teams that they didn't need to take immediate action, the discussion about Docker alternatives is still up in the air.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"anchor":"searching-for-docker-alternatives"} -->
<h2 class="wp-block-heading" id="searching-for-docker-alternatives">Searching for Docker alternatives&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The team behind CAST AI depends on many OSS images, so we didn't wish to go dark on April 14. Like many other teams, we started thinking about workarounds.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Luckily, in light of Docker's announcement and its subsequent '<em>mea culpa</em>', we understood that we wouldn't need to take any action. Phew!&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>However, we found interesting Docker alternatives in this write-up from OpenFaaS' Alex Ellis</strong><sup>4</sup><strong>.</strong> One of the potential workarounds he outlines is to completely delete your organization on Docker Hub and recreate it as a free personal account. This step should suffice to prevent hostile takeovers of your name.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>While large projects can't delete their organizations, smaller initiatives that can tolerate some downtime could try the following steps</strong>. First, create a new personal account, and use it to mirror all images from the organization. They could then delete the organization and rename the personal account accordingly.&nbsp;&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Another actionable idea is to start publishing to GitHub's Container Registry</strong><sup>5</sup>, which offers free storage for public images. GitHub is, of course, far from perfect, but with recent developments, including Actions and GHCR, it makes it easier to publish images.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>There are also other registries that offer free hosting for open sources, such as GitLab and Quay. Not to mention that you could also host your own registry.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>When migrating images, the crane tool by Google's open source office can mirror them much more efficiently than Docker pull, tag and push. Another helpful solution is CNCF's Harbor<sup>6</sup>, an open source registry that promises to have a mirroring capability.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"anchor":"summary"} -->
<h2 class="wp-block-heading" id="summary">Summary</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docker Hub is a useful repository for images that support open-source projects. However, the recent sunsetting announcement has unsettled the OSS community, and the discussion about Docker alternatives will likely continue.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Open source contributors already do their best to serve their communities, so they will surely go the extra mile to ensure their projects continue working as required. One way or another, they will find a way forward – and we hope the above list will also be helpful.</p>
<!-- /wp:paragraph -->



<!-- wp:heading {"level":4,"className":"wp-block-heading","anchor":"references"} -->
<h4 class="wp-block-heading" id="references">References</h4>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><sup>[1] - <a href="https://www.docker.com/products/docker-hub/" target="_blank" rel="noreferrer noopener">Docker Hub</a></sup></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><sup>[2] - <a href="https://www.docker.com/community/open-source/application/?ref=its-foss-news" target="_blank" rel="noreferrer noopener">Docker-Sponsored Open Source Program</a></sup></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><sup>[3] - <a href="https://www.docker.com/blog/we-apologize-we-did-a-terrible-job-announcing-the-end-of-docker-free-teams/?ref=its-foss-news" target="_blank" rel="noreferrer noopener">Docker: We apologize.</a></sup></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><sup>[4] - <a href="https://blog.alexellis.io/docker-is-deleting-open-source-images/" target="_blank" rel="noreferrer noopener">Alex Ellis</a></sup></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><sup>[5] - <a href="https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry?ref=its-foss-news" target="_blank" rel="noreferrer noopener">GitHub Container Registry</a></sup></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><sup>[6] - <a href="https://goharbor.io/" target="_blank" rel="noreferrer noopener">Harbor</a></sup></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->