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
- golang
- martini
- taipei-torrent
Log in or sign up for Devpost to join the conversation.