I can’t remember the last time I went to a meetup using public transportation. The reasons this became possible is location. The location of today’s Docker meetup is reachable using a direct bus from my home, which is a very very rare thing to happen to me. Even though I traveled by bus through one of the Bangalore’s busiest streets, I reached only 10 minutes late, which is good considering that I only realized very late that this meetup began at 9:30 AM!
The meetup started with Neependra Khare introducing Docker and containers. After a brief introduction to Docker and differences between traditional virtual machines and containers, Neependra introduced everyone present to the Docker community in Bangalore and the format of meetups. We then started with the first session of the day – “Docker on Amazon and Azure” by Neependra Khare. We discussed how Amazon or Azure provide tools to easily create a cluster based on Docker using a template provided by Docker for AWS or Azure. We created a 4 machine cluster and deployed a simple docker image to it and accessed the service from any of the machine’s IPs. The session generated a lot of questions and answers and also featured a blooper sequence when Neependra played the wrong video in the presentation.
After this, we had a session on “Service Discover and Load Balancing” by Ajeet S Raina. We started with a discussion on Swarm mode in Docker from 1.12 and a recap from the discussion in the last meetup. We discussed networks and how Swarm handles service discovery with its own key value store (built-in into Docker). After this, we discussed load balancing in Docker 1.12. Docker’s load balancing works on layer 4 of OSI network stack which is much lower than other solutions such as HAProxy. We also discussed how the network traffic flows in detail across the various networks and reaches the intended container.
This was followed by a session on “Distributed Application Bundle Overview” by Thomas Chacko. Distributed Application Bundle (or DAB) is a mechanism to make it easier for ops to deploy entire applications. It is similar to Docker Compose which is primarily targeted to developers. Docker DAB is still experimental in Docker 1.12 and things may change. After discussing more about this, Thomas walked us through a demo where he converted a docker-compose.yml file to the DAB format (which is JSON) using the docker-compose tool. The package is deployed using the docker deploy command which basically seems to run the services in Swarm mode.
After a break, we had a session on “Logging as a service using Docker” by Manoj Goyal. We started with a discussion on microservices and why is logging difficult in such an environment. We discussed various techniques to log from individual services or from a central service. For central service, we discussed The Elastic Stack and its components. We then walked through a demo with a simple application using Beats to send logging data to another instance running the Elastic Stack.
We then had a talk on “SDN-Like App Delivery Controller using Docker Universal Control Plane” by Prasad Rao. We discussed a bit about microservices and their overall structure very briefly and went on to discuss Docker Universal Control Plane (UCP). We discussed hardware and software based solutions to load balancing and a hybrid solution. After discussing the detailed workings of these solutions, we walked through a demo of an hypothetical microservice based ecommerce application.
Finally, we had a session on “Persistent Storage in containers using Gluster” by Prasanna Kumar. We saw a quick video demo of setting up a Gluster pool on a cluster of three nodes. We then saw a detailed walkthrough of how Gluster works.
The meetup ended at around 2 PM with coffee and snacks. The meetup was well attended with a full house and standing room only, which meant there were over 100 attendees. However, that is still 20% of the total RSVPs, which is lower than average I see across various meetups. It seems the popularity of the topic makes it very attractive to RSVP but Bangalore traffic discourages people to attend. The meetup was intensive and all the topics leaned slightly towards more advanced usage, which is good. It is always difficult to cater to the newbies but there should be a balance of both to grow and sustain the community. To grow, you need beginner topics and to sustain, you need advanced ones. It is difficult to strike the right balance and takes time. I was satisfied with this meetup and topics.
Photos from the meetup are embedded below.