Revisiting Docker and Docker Hub
It began in 2016 #
Recently I had a coworker ask me "Why did you guys choose to use Docker?" (and
various other tools). To which I didn't really have a reply except that "it
was hyped up and popular at the time". Which really was the case for my first
usage of Docker. Back in 2016, Docker hype was building and lots of people
were exploring into using it.
So we hopped abroad the train for one of our newer and smaller scoped
projects. The regular stack used Vagrant and Virtualbox and virtual machines,
the regular battle tested stack. But Docker offered flexibility and ease of
use, the phrase "disposable VM" comes to mind. But in 2016 the toolchain for
Docker and OSX wasn't full matured yet. There were still many bugs and the
experience itself of setting up and being able to do what we wanted was
Documentation is probably one of the most feared tasks for any large software
project. Especially one that becomes popular and people start criticising it.
I should not be one to talk about documentation, but using Docker in 2016
largely lead to issues because documentation wasn't adequate, and the
community wasn't mature enough yet. More often than not, stackoverflow became
what we used to get answer to problems, which isn't ideal.
Docker in 2017 #
Now in 2017, the Docker toolchain has matured a lot, no more fiddling around
docker-machine and playing around with networking. Although all the
time spent figuring out networking was valuable knowledge, the networking
between containers has been much improved. The OSX docker app works
beautifully, and there are no more issues with memory leaks or crashing.
I wish I documented more my issues with Docker from a year ago, which is why
I'm going to try to write more about my experiences with Docker in 2017.
Disposable VM #
Currently I'm using Docker to set up images where I'm slowly building up
various tools that work with GAMS. Docker is useful for this because I
can write a Dockerfile that is based off a Linux OS, Ubuntu in my case, and
then have it download GAMS, and setup GAMS in Linux.
Then after having GAMS set up, I saved the image and pushed it to Docker
hub to share with the community. This allows anybody to pull the GAMS
Linux image and use it for whatever they want. This also makes it a lot easier
for me to slowly add more software tools to the image, and then build it up
and share again. As it is, the image is 2GB, which seems fairly large, but
compared to setting up a Windows OS and installing it, it's not much at all.
What's next #
Next will be to try out Docker swarm and set up a multiple containers that
talk to each other, and see how easy it is to manage. Although these days I
hear Kubernetes is all the hype.