We will be undergoing planned maintenance on Oct 7th 6:00AM UTC / Oct 7th 2:00AM ET

Inspiration

We do a lot of mass deploys in our company using Docker and it causes our private docker registry to choke. This project was born out of a desire to tackle this problem as any improvements in it can lead to drastic improvement in developer happiness.

How it works

It involves 3 components - a registry, a client and a bittorrent tracker.

The client will push a docker image into the registry. It can later be deployed into a lot of machines, where the client can do a pull triggering the bittorrent protocol to swarm in.

It has cut down deployment times by 90% compared to plain vanilla pull from a docker registry.

Challenges I ran into

Wiring it all up. Lack of sleep. I ran into all sorts of concurrency issues. Thankfully golang's tremendous concurrency support helped me to go through it.

Accomplishments that I'm proud of

I managed to pull it off working alone in 48 hours :) I learned a lot of golang (just started learning about it a week ago) and learned a lot about the powerful features that Go has to offer which can be learned. I am a perl hacker by day.

What I learned

Golang, distributed systems, designing concurrent systems, a very good understanding of the bittorrent protocol.

What's next for Docket

It's already production ready I feel. First step is to use it internally and my company and fine tune it. I have major plans on improving it and hopefully it can become a solid alternative to doing deployments outside the official private docker registry.

Built With

Share this project:

Updates