Docker is a system which uses operating system level virtualisation to package software into isolated containers. This facilitates a microservices architecture where a complex application can be divided into several containers, each of which specialises in the implementation of one feature of the application.


Kubernetes is an open source container orhestration system that is commonly used with Docker containers to facilitate distributed applications, the major benefits being that such applications are highly scalable and fault tolerant.


RabbitMQ is a cross-platform, lightweight open source message-broker that is ideal as a communication mechanism between nodes in a distributed application.