Using the power of the TreeScale event distribution system, we built
Container Registryon top of it as a distributed storage backend for
Container Image Layers.
So the main idea is to split layers into multiple small chunks and distribute them over servers, and during
Pull or Pushprocess, when you are uploading or downloading Container Image Layers TreeScale Container Registry will send you Layer chunks from multiple sources, which will give about two times more performance in terms of networking usage.
The most popular container technology is, of course, Docker Containers, and at Alin.io, we are mainly focusing on that. We even built our distributed Docker Clustering technology primarily for our use case.
Current Docker Distribution/Registry releases are stable and work very well when you need something to work within a small environment. But when you need to scale it, scaling storage is always an issue to give access to every distribution/registry server. Sometimes Docker Images get more extensive, and network traffic on hold increases dramatically. And that's why we started an investigation of that issue because we also had that problem.
Based on the ideology of TreeScale technology, all things should be interconnected and fully distributed without impacting other services during downtimes. And using this principle, we built a storage backend specially for Docker Distribution/Registry so that now you don't have a
300MB Image Layersitting somewhere in your storage that will eat total bandwidth during the download/upload process; instead, we just made a split into small prices and using TreeScale system submitted it into multiple servers. And whenever you download the Docker Image layer, TreeScale combines the parts from various servers and responds to your request. This principle gives about 2-2.5 times more performance than downloading full images at once.
For now, it is possible to use Container Registry only with Docker CLI, which is Docker's primary command line tool. First, you need to log in to TreeScale Container Registry for other actions.
~# docker login repo.treescale.com
username: [your TreeScale Username]
password: [TreeScale password]
After this step, you can make regular
pull/pushactions for Docker Images like this one.
~# docker pull repo.treescale.com/[username]/[image name]:[tag]
~# docker push repo.treescale.com/[username]/[image name]:[tag]
You will feel the difference in Pull and Push performance compared to other container registries.