Using power of TreeScale event distribution system, we built
Container Registry on 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 Push process when you are basically uploading or downloading Container Image Layers TreeScale Container Registry will send you Layer chunks from multiple sources, which will give about 2 times more performance in terms of networking usage.
Most popular container technology is of course Docker Containers, and at TreeScale we are mostly focusing on that. We even built our own distributed Docker Clustering technology, but it is specially for our use-case.
Current releases of Docker Distribution/Registry is quite stabile and working very well when you need something to work with in a small environment. But when you need to scale it, it is always issue with scaling storage to give access for every distribution/registry server, because sometimes Docker Images getting larger and network traffic on storages increasing dramatically. And that's why we started investigation of that issues, because we also had that problem.
Based on ideology of TreeScale technology all things should be interconnected and fully distributed without having impact on other services during downtimes. And using this principle we built storage backend specially for Docker Distribution/Registry, so that now you don't have
300MB Image Layer siting somewhere in your storage and which will eat full bandwidth during download/upload process, instead we just made a split into small prices and using TreeScale system submitted it into multiple servers. And every time when you are downloading Docker Image layer TreeScale just combining that parts from multiple servers and responding to your request. In average this principle giving about 2-2.5 times more performance than downloading full image at once.
For now it is possible to use Container Registry only with Docker CLI, which is main command line tool for Docker. First of all you need to login to TreeScale Container Registry for making other actions.
~# docker login repo.treescale.comusername: [your TreeScale Username]password: [TreeScale password]
After this step you can just make regular
pull/push actions for Docker Images like this ones.
~# docker pull repo.treescale.com/[username]/[image name]:[tag]~# docker push repo.treescale.com/[username]/[image name]:[tag]
You will definitely feel the difference of Pull and Push performance compared to other container registries.