Over the summer, I came to a realization: I love Docker! The power and possibilities that come with containerization are endless. For this very reason I decided to do something about it. There are no Distributed Computing courses offered at the University of Guelph (at the time of writing this) and so very little of our student body have any experience with utilizing tools like Docker at all!

My course of action was to bring students up to speed in the form of a workshop. I sent out emails and asked around and the next thing I knew, I had over 150 people reaching out or emailing me about attending. Over the course of the next several months, I planned, organized, and prepared the workshop.

To be frank, I was nervous on the day of. This was the first time I had hosted a workshop with such high attendance. I'd never talked publicly in this capacity before, and I was afraid I'd make a mistake or worse, swallow my tongue.

As the crowd rolled into the lecture hall, I felt ready. I had the slides up, the server ready to handle everyone's load, and a team of students helping me maintain the workshop environment. It was off to a great start. I was getting into the swing of things, introducing everyone to the concept of distributed computing and containerization, the problems it solves, its advantages and disadvantages. The audience was engaged, with questions flowing left and right, but there was one thing I wasn't prepared for.

Who knew compatibility would be an issue? I mean, I knew Docker would be harder to install on Windows, or may not work, so I provided a server for those who needed it. What I didn't think about was the amount of students who would need access to it. By the end, I had almost 2/3 of the audience working from one docker instance, and the problem began to snowball. My volunteer team was able to get grant access to everyone one by one, which took some time, but I had accounted for technical difficulties so I was still on schedule. One thing my workshop did not account for though, was people trying to verbatim copy the example commands I provided, and so everyone was creating containers with the same names on the same instance.

Overall, after two and a half hours the workshop was complete and people were satisfied. We had a couple more connectivity issues due to the school network load and the result of many people trying to install Docker on their personal computers. When the combination occurred and consequently caused a failure, the students settled on using the school server I created. After getting through the hiccup we were able to do what we set forth to do. We made our own application that served cat memes, as well as a simple Nginx proxy. I had taught the basics, and now it's time to teach more advanced stuff.

I received a lot of praise for my workshop. People really seemed to enjoy it, as did I! With many people asking me when the next one is coming, I've decided to prepare a workshop focusing on the advanced inner networking that allows containers to communicate externally and internally, followed by a deep dive into Kubernetes. Stay tuned for more next semester!

Docker Workshop, Applications are changing!