So, DockerCon! It turns out that building cool stuff gets you places. Back in 2016, I built a Docker Swarm from 5 Raspberry Pis by following Captain Alex Ellis’ tutorial and then went on to create two different visualisations for the swarm to demonstrate real time load balancing. This was picked up by Alex who got in touch soon after with the amazing news that Docker wanted to invite me to DockerCon17 in Austin, TX! I was incredibly excited about the prospect and asked if I would be able to give a talk showing some of the things I’ve done with Docker, so it was to my delight that they agreed.
What is DockerCon like?
DockerCon is the most amazing concoction of fantastic people and organisations. The range and diversity of the attendees is massive which means that there is always someone near you to have a really good conversation with. This is one of my favourite parts of DockerCon because I have met so many awesome people and learnt so much, even in the short four days I was there.
The top highlights for me definitely included getting a shout out from Docker CEO, Ben Golub during the opening general session of the week and when I received comments like this about my talk:
If you want swag, the expo hall is definitely the place to go. I've collected 8 t-shirts, two hats, one AWS glass, two pairs of sunglasses, one DockerCon coaster and more stickers than I can count! It was lucky Docker supplied swag bags for us to contain all our acquisitions.
Raspberry Pi workshop
Alex ran a workshop for 40+ attendees at the start of DockerCon and asked me if I would like to help as a teaching assistant. Of course, I gladly accepted! What's better than talking to other Docker enthusiasts about Raspberry Pi and Docker?
The workshop went really well and I even wrote a script to auto configure the Pi SD cards so that we didn't have to do it each time manually. I still need to find a minute to fix those ugly hardcoded bits so Alex can merge.
Community theatre talk
As part of my talk, I gave a live demo of load balancing on a remote Docker Swarm which was represented on my hardware gauge. This demo consisted of benchmarking the cluster with just one container, watching the gauge go up and then firing up a second container via Portainer and benchmarking again. This time, both of the dials moved to show the load being distributed. This demonstrated that the cluster was more effective at handling requests with multiple containers than just running with just one.
The code is available here if you want to hack about with it. The worker containers each communicate with the Raspberry Pi via a Redis pubsub channel so that I could show the load in real time.
I found out that setting up a Docker Swarm is really easy! I went with Scaleway and fired up two Docker instances but unfortunately they were running an old version of Docker (v1.12.1 IIRC) which meant that I couldn’t deploy my app with Docker stacks. As a result, I upgraded Docker using the official guide. Once I had the latest version of Docker, I just needed to designate one of the hosts a manager and init the swarm. The last step was to get the other host to join the swarm as a worker, which was just one command too.
The other thing I didn’t realise is that you can hit any node within the swarm and it will automatically load balance across the whole cluster. Initially, I had assumed that you would have to send requests to the manager(s) for distribution, but this isn’t the case! Another example of Docker being awesome.
Docker also asked me to create a demo for the DockerCon museum, which you can read about in my post about TweetDock. Essentially, TweetDock used the Twitter search API to find all the tweets in the last hour containing #DockerCon and then used this data to drive two servos. The left dial was for the number of unique tweeters and the right for the number of tweets.
During the closing session, there was Moby's Cool Hacks where the two winners of the contest gave live demos of their hacks. The first of these was Play with Docker which is a really cool implementation of Docker in Docker to allow users to get started with Docker as quickly as possible. Their live demo was fantastic and included remote control of a PWD session via
AMAZING live demo of Play with Docker on the main stage!! #DockerCon— Finnian Anderson (@developius) April 19, 2017
The other demo was Alex Ellis and his Functions as a Service project, in which he used an Amazon Echo to trigger his FaaS framework to give Gordon the Turtle a pay rise! FaaS is so easy to use that I whipped up some functions whilst coding in my hotel room, so I recommend you have a go. Awesome stuff.
The night of the after party on Rainey Street, dad and I were back at the hotel because I was unable to get into almost all the bars 😭. We decided to make the most of it and started to look at what the Twitter traffic surrounding #DockerCon was like. It turns out that there was quite a lot - see https://dataknut.github.io/tweetDockerCon for some analysis of the results and see if you made it into the top 50 tweeters!
DockerCon has been one of the most amazing experiences of my life, so I would like to convey my heartfelt gratitude to the whole team at Docker for creating such an amazing and well organised event for us all to enjoy. My special thanks also goes to Alex Ellis for supporting me and helping out with getting me to DockerCon and to Victor Coisne for sorting out the logistics. Thank you all so much! #DockerLove ❤️ ❤️ 🐳
The monitor was built using two servos and a Raspberry Pi which communicates with the app containers via a Redis pubsub for real time statistics. I've published the Docker images on the Hub and the code is available at github.com/developius/dockercon-swarm-app. The slides are available on Speaker Deck and I will post the video of the talk as soon as it's up, so stay tuned!
Update: here's the video!
If you didn't catch me at DockerCon, don't worry because I'm hoping to go to DockerCon EU in October!