What is most valuable?
The most valuable feature of Docker is by far is creating your own image. By creating your own image, you can have an environment for whatever you are working on that is exactly how you want it.
The idea that you can create a machine this quickly, use it, destroy it if you want, build upon it, take things out, and rebuild very quickly is very useful.
For example, you could add a command that installs a certain tool to your Dockerfile and build that image. Your image now has that tool. If you want to get rid of that tool, you just get rid of the line from the Dockerfile, rebuild the image, and it’s like you never installed that tool.
It gives you a feeling of complete control. By comparison, doing the same thing with something like Vagrant would take a lot of time. With Docker, building an image is so fast that it’s practically disposable.
How has it helped my organization?
Docker has allowed me to have pre-defined working environments that can be moved to the cloud and I know they will be exactly the same. Something can be deployed to the cloud, but the overhead of running a virtual machine is wasteful. This is especially the case since on most clouds, an account is already contained by a virtual machine. Running a virtual machine within a virtual machine is possible, but not ideal.
What needs improvement?
Docker is already aware of how faulty their file system volume mounting technology is on the Mac. I see that they are making improvements in that area, but there is still a long way to go.
On the Mac, Docker is far from perfect. The program has issues communicating with the file system and receiving events. As a result, Docker’s volume features are very slow on the Mac. However, there is a workaround called Docker-sync. Docker sync goes around Docker’s weak volume support on the Mac by syncing files through the network using unison and rsync. Still, I would only give Docker a 10 if their volume experience were as good on the Mac as it is on Linux. I have used this product in a Mac environment as well as Linux.
For how long have I used the solution?
I have been using Docker since November, 2016. I started using it to see what all the talk was about. The initial learning curve was somewhat steep. What Docker does is simple. However, understanding what Docker does is important and not obvious. That’s why I took Lynda’s course on Docker. This course gave me a good practical understanding of Docker. After understanding the basics, the documentation actually became useful to read.
What do I think about the stability of the solution?
In my experience, Docker has been very stable.
What do I think about the scalability of the solution?
There have been no scalability issues. As a matter of fact, Docker itself can be used to help you scale up by allowing you to create a new environment quickly when you need more power, or if you want to deliver an instance closer to a customer.
How are customer service and technical support?
In term of technical support, the Docker community is very helpful and active. There are already a lot of answers to common questions on stack overflow.
Which solution did I use previously and why did I switch?
I previously used Vagrant. I switched because of Docker’s speed, ease of creating images, and its low overhead.
How was the initial setup?
The initial setup of Docker on the Mac is simple. There is a very friendly GUI installer. If you already have Homebrew installed, you can simply run “brew cask install docker”.
Installing Docker on Linux is a different story, since the versions supported by the default package manager sources are out of date. It’s necessary to follow somewhat lengthy instructions from Docker’s website.
What's my experience with pricing, setup cost, and licensing?
The Docker community edition is free. I don’t have any experience with their paid versions. I have not felt the need to upgrade.
Which other solutions did I evaluate?
I tried Docker because there was a bit of hype around it. I had been using Vagrant. I did not know about things like LXD before starting to experiment with Docker. If anything, I have learned about alternative container technologies that I might evaluate later.
What other advice do I have?
I think that Docker is the best among its peers. Creating, downloading, uploading, and sharing images is faster than doing the same on something like Vagrant.
When using Docker on the Mac, I only used it to create a local development environment. I also have a Docker installation running in production on a production environment being used as the backend for an iOS app.
I would advise people to take the Lynda course on Docker. In my experience, the documentation only becomes useful after understanding the basics and the general idea.