Simple Up and Running Script Based Containerization
February 15, 2017

Simple Up and Running Script Based Containerization

Claudio Fernando Maciel | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User
Review Source

Overall Satisfaction with Docker

We use Docker to provide us fast containerization of our Continuous Deployment and Integration pipelines. Once our code is good for shipping, we trigger a test pipeline which will in turn compile all its dockerfiles, upload them to hub.docker.com if needed and then upload/install an updated version of the system and its environments at DigitalOcean via Docker drivers and swarm. Our developers as well as our production servers use it as well, being our stack composed of a total of 4 different nodes, a MongoDB container; an elasticsearch container; a nodejs container and our discovery service container, comprising Consul key-value database to store all data from our slave nodes. It's solely maintained by our development team, but the system built within is widely used by our staff as well as the company's clients, spread throughout the world.
  • Its topology isolation is in my opinion an unbeatable feature. In our systems we have the need of parallel Java 7 and 8 versions to be running together. Without Docker that would not have been made possible.
  • Docker Swarm, taking care of our load-balance characteristics so needed for our systems is a must have.
  • Docker composer is a very powerful feature, therein I can have my containers scripted and each of its continuous integration and deployment separated with each of its own concerns isolated whilst all being nicely bootstrapped together under the same "docker-compose up" command.
  • Some commands are not very intuitive. In order to have an entire swarm properly functioning [specifically for the scenario we have at our company] wasn't a simple task, having to maintain a very wide range of environment variables safely and nicely kept and good for use. The pipeline to have such a topology ready wasn't simple to figure out how to come up with.
  • Some volumes, if not properly shut down when its necessary, will take up to all your disk space. The extra -v attribute wasn't too obvious to use when removing an specific volume leading us to a huge headache.
  • Some containers, though exposed as official ones at docker.hub.com, are very space and memory consuming. We have do figure out our own containers for pretty much everything, even though the services that were necessary in the containers were pretty vanilla.
  • We took quite a long time to come up with the exact scripts/commands and pipelines that our company needed. It has a pretty steep learning curve for the professional who need to create/implement the scripting part. Using it is a completely other story, as it's the simplest container tool I've ever dealt with. Once all the pipelines were properly implemented, we saved virtually hundreds of hours of implementation and debugging as we no longer needed to match the faulty server's environment with the implementation one
  • Docker became an essential tool in our stack as it provided us a fast way to have our servers and our clients' server up and running in no time.
  • We needed some patience and tech savvy professionals in order to get Docker to actually become a company's culture. Its too steep learning curve got our developers scared at the beginning, leading the entire process to become a little too slow in the starting phases.
LXC is great tool if you do not want to deal with any learning curve, however, we found a huge stumbling block when it comes down to having to port the newly created container throughout the company's serves and machines. With Docker everything is smooth, as all we needed was our Dockerfile and docker-compose.yml files.
Vagrant works nice when we are talking about scripting, but the ending result is just another your-average-joe virtual machine, so we gave up. VirtualBox, well, it's a virtual machine as well. Fast up and running server with simple scripting medium, only with Docker!
It's excellent for Continuous Integration and Continuous Deployment. Simple, savvy serviced based containers that can be fired at the simple script command. If you need to have your system promptly up and running, Docker is a perfect choice, even for the unskilled user, as it can be configured to run automatically via scripting by the technical staff. It provides a very elegant way of guaranteeing that all the environments are in sync throughout the company. A developer may have its own machine, but it will always match the production and staging servers.