Docker can decouple VM provisioning and deploy.
November 09, 2018

Docker can decouple VM provisioning and deploy.

Ben Lachman | TrustRadius Reviewer
Score 7 out of 10
Vetted Review
Verified User

Overall Satisfaction with Docker

We use Docker as part of a rapid deployment project that allows a service to be easily deployed directly onto VMs automatically during staging and production. It makes the management of the VM a parallel task to the deploy process. Traditionally the provision of a VM would be intertwined with the deploy process and containerization allows for these things to be decoupled.
  • Containerization - allowing multiple micro-services to function together without in-depth orchestration at the VM level.
  • Rapid deployment - a developer with appropriate access can simply push to the correct remote and the deploy happens automatically from there
  • Decouples provisioning from VM administration - allows containers to be deployed (more) regardless of VM set up.
  • Containers are often opaque - if a container doesn't work out of the box, it's messy to fix.
  • Logging is complexified by the multiple containers and logs are often not piped to places you expect them to be.
  • Networking is complexified due to internal port mapping between containers, etc.
  • Allows us to easily develop and deploy small projects without significant overhead.
  • Is one more requirement for DevOps hires.
  • Allows us to choose the best cost solution for hosting each service without locking in to that solution long term.
Docker provides less lock in and more portability than Heroku. You can also easily self host or choose a Docker hosting service. Additionally, there is a wide availability of Docker containers where Heroku build packs are somewhat more limited. Heroku offers a more turnkey approach at times and has a quicker initial time to deploy.
Docker is great for staging and quickly deploying small to medium projects. With larger projects, it can become a significant challenge to manage all of the containers used for multiple microservices, keeping them up to date, secure and portable to other platforms. One of the goals of Docker is to allow the macro service to be platform agnostic and this can sometimes be more of a challenge than its long-term benefit.