When we create a container using docker run
, the container host does not set any resource constraints on the container. If you are planning to build a multi-tenant system to host a set of microservices as containers, you would want all the services to perform well. Each service would have its own resource requirements: some services may run CPU intensive workloads, some may run memory intensive work loads, like in-memory storage, and few may bank on high bandwidth. In a multi-tenant environment or shared infrastructure, resource usage should be constrained to avoid problems like noisy neighbors. If it's not, a CPU-intensive service might eat into the host system, which impacts other services running on the same host. The following image shows a typical noisy neighbor problem:
Noisy neighbor is a common problem in cloud-computing and shared infrastructure, where a co-tenant monopolizes bandwidth, disk, IO, CPU and other resources, and can negatively impact another...