Containerization - VM vs. Docker
- Acronym
- sig-devops-container
- Belongs to
-
SIG DevOps
- Responsible
-
tzaika
- History
- (v1) 2021-01-12 - created initially
- (v2) 2021-01-13 - changed the deadline; added questions
- (v3) 2021-01-15 - added "viable options" and decision evaluation steps
- (v4) 2021-01-22 - moved the questions part up to the "todos" section (makes it better visible)
- (v5) 2021-01-26 - updated todos and removed unnecessary information
- (v6) 2021-02-05 - added resolution details and reasons for resolution
Why is there need for such a decision?
The application needs to be hosted. There are several ways to do this.
The application can be run on a physical server.
It can be packaged in a container or run in a virtual machine.
All of these approaches have their own advantages and disadvantages.
These have to be weighed up.
Additional sources for better understanding the background
Viable Options
- A virtual machine (with “VirtualBox”)
- container (with “docker”)
Alternatives not seriously considered
None
How is this decision evaluated?
First we have to implement two PoCs. One using VM and another one using docker.
Then compare this two options on such aspects as:
- Installation
- Configuration
- Lightweight
- Input from main Stakeholder (UID)
- Proprietary solution
- Workflow (what is easier)
- Application delivery: build -> test -> deploy -> run
- Updates delivery (Scenario: Hotfix)
- local debugging
Resolution Details
It was decided that the docker technology is better suited to the project.
Most of the explanations for the individual resolution details can be found in the wiki.
Installation
The installation of the solutions on the basis of both VM and Docker are at a similar level of complexity.
Configuration
- The flexibility of the solution with VM is very high, but this creates a large overhead
The level of complexity for the configuration of VM is very high and hard to master
- Using docker is the configuration a lot easier and better to understand
The necessary information is easier to find and there is more of it in contrast to VM\
Lightweight
- The VM brings a lot of overhead with it because it practically simulates a real machine
- The Docker containers can be made as small as you can imagine
Input from main Stakeholder (UID)
- The server used in the project will be a Microsoft Windows machine
(update: Linux Server)
Proprietary solution
- Both VM and Docker solutions are more or less platform independent (but the VM has more overhead)
Workflow
The workflow is simpler when using Docker because it is easier to understand
Application delivery
Deployment is very similar in complexity
Updates delivery
Not considered
Debugging
See decision Debugging
Reasons for the resolution
- Better understanding
- Lightweight
- Flexibility