Docker is a lightweight alternative for deploying and operating microservices. A microservice with all its dependencies can be packed into a Docker image and can then be well isolated from other microservices as a Docker container.
Virtual machines appear too heavyweight by comparison, whereas simple processes do not provide the necessary isolation.
Docker makes it easier to deploy the software. It is only necessary to
distribute Docker images.
Dockerfiles are used for this purpose,
which are very easy to write. Concepts such as immutable server are
also much easier to implement.
With Docker Compose, multiple containers can be coordinated to thereby build and launch an entire system of microservices in Docker containers.
Docker Machine can very easily install Docker environments on servers.
However, Docker requires rethinking regarding operation. Therefore, in some cases, alternatives might be helpful. This can be, for example, the deployment of several Java web applications on a single Java web server.