Geek Proud, GeekOut.

Docker – The New VM on the block

I have already told you what a VM (Virtual Machine) is and how to go about making one of your own. I also mentioned something called Vagrant which allows you to easily download images made by other people to hopefully speed up your development process. Well, you probably already know that technology does not really sit still for very long and so today we talk about a new Visualisation engine that has been kicking up a bit of a storm. Docker. It is still is a virtual machine but instead of one machine that provides your application, database and storage with Docker you may end up deploying several machines, one for each purpose.

To try and help you understand how it works we will use an analogy. I guess you all know what shipping containers are? You do..? Good. So imagine many shipping containers stacked on top of one another, each container is therefore a specific job but has the ability to communicate between one another. One container could be for transporting cars, another holds somebodies possessions as they migrate from one country to another. Yet another contains a vast quantity of plush Pokemon direct from china. Now you would not, for instance, put a car in a shipping container and then fill the car full of plush Pokemon. Well… you might, just for fun. But as fun as that sounds removing the Pokemon from the car on the other end of the trip would take a fair amount of time and effort. The great thing about shipping containers is that you can swap one out for another and everything will still just fit together. It does not matter what type of car or what type of plush Pokemon you have inside the idea is that they stack on top of one another for ease. Docker works under the same principle.


In theory (rarely in practice) it should not matter what type of Database you use for you application be it MySQL, PostgreSQL or even Oracle if your code is generic enough you should be able to swap out one for the other with minimal hassle. If you are running everything on one machine you have a great deal of worry about swapping one for another because the changes you make might bring down your whole live environment. If we stick with our container analogy in theory in the world of Docker you should be able to just swap out your MySQL container for a different database container with minimal configuration required.

Docker itself was originally released in 2013 but is still under fairly heavy development. They have just released a native app for both OSX and Windows which has been well received by the general developer community. Before the people who I work for took it on they wanted to know if it was going to be some sort of flash in the pan. This is when I had to get googling and found an article saying that Microsoft has already integrated Docker into its technology. If that was not convincing enough take a look at all the companies that have already integrated Docker like Uber, New York Times, GroupOn and lots more. So I set some time aside to learn a lot more about it and how it works but I will say that even with all the experience I have have found the learning curve quite steep. Last week after quite a lot of trial and error my fellow developers and I released our first product using Docker since then we have learned what we could do better and applied some patches to try and rectify that.

Docker is certainly very interesting in the way it does things and it may take me a few more weeks and a lot more reading to become fully efficient with it but I am getting there. Like all tools, there are probably places you don’t want to use it and I am sure that any expert that has come across its shortcomings will tell you exactly what that is, sadly I as yet can’t (apart from the learning curve). I don’t know how many of you would be interested in learning more about Docker, or at the bare minimum learning from what I know. I have often thought of producing some video stuff for GeekOut that deals with the basics of some of what I know. If enough people would like me to do a video demonstrating things like Docker, Vagrant and even some basic programming then I can find a way to do it. I often find videos on the internet that do not quite explain enough for me and think that there may be a better way to do it.

So do let us know if this would be of interest to you as readers we love your ideas and feedback and always try to respond. As per usual you can get hold of us via Twitter, Reddit and Facebook


4 responses

  1. Up until a couple of weeks ago I was working a project to deploy auto-scaling virtual machines in Microsoft Azure with automatic configuration for Docker containers…it was a freaking nightmare. Not so much on the Docker side, that was fairly straightforward, even for me who’s a clueless idiot when it comes to Linux and bash commands, but the Azure-side products we were working with, Virtual Machine Scale-Sets in particular are still fairly early in development and don’t have certain components that are absolutely necessary for Docker.


    August 10, 2016 at 8:35 am

    • There is still a lot of work to be done to integrate Docker but uptake does seem to have a good throughput and there are a lot of devs trying to make it better. There is a known issue with the OSX native app that means that files being synced to a volume run super slow. This means in dev accessing a page went up to 42 seconds which is really unacceptable. There is a work ( around but it’s comforting to know that the team are aware of it and actively working on a solution. Such is the nature of web development, it moves so fast

      Liked by 1 person

      August 10, 2016 at 10:23 am

      • If you have access to the VMs and are doing the config manually it’s still manageable. But if you have to automate it, then it gets even trickier.

        I think since everything is still in constant re-development, it makes fitting all the moving parts much harder


        August 10, 2016 at 10:31 am

  2. Pingback: Why I both love and hate my Mac | GeekOut South-West

Drop us a line

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.