ContainerCloudSim: An Environment for Modeling and Simulation of Containers in Cloud Data Centers


Due to the elasticity, availability, and scalability of its on-demand resources, cloud computing is being increasingly adopted by businesses, industries, and governments for hosting applications. In addition to traditional cloud services, namely Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), recently a new type of service---Containers as a Service (CaaS)---has been introduced. An example of container management system is Docker that allows developers to define containers for applications. Containers share the same kernel with the host, hence they are defined as lightweight virtual environments compared to virtual machines (VMs) that provide a layer of isolation between workloads without the overhead of hypervisor-based virtualization. CaaS can lie between IaaS and PaaS: while IaaS provides virtualized compute resources and PaaS provides application specific runtime services, CaaS glues these two layers together by providing isolated environments for the deployed applications (or different modules of an application). As illustrated in the Figure below, CaaS services are usually provided on top of IaaS' virtual machines. CaaS providers, such as Google and AWS, argue that containers offer appropriate environment for semi-trusted workloads, while virtual machines provide another layer of security for untrusted workloads.

Figure - The Container as a Service cloud service model links the PaaS and IaaS layers.

Resource management policies to ensure Quality of Service (QoS), avoid energy wastage, and resource fragmentation are an integral part of cloud systems. Innovating and comparing resource management strategies require evaluation environments that facilitate the design of experiments while making them repeatable and accurate. Simulators are useful tools to build such evaluation environment in the cloud context [1]. They are particularly helpful at early stages of research to identify and eliminate ineffective polices or when accessing large scale distributed infrastructure is costly and not possible. Testing and evaluating resource management policies in the first verification stage in a production environment is both risky and costly. In this respect, a number of simulation tools are developed for evaluation of algorithms that are specifically designed for cloud computing environments. Although containers are going to be one of the dominant application deployment models in the cloud, most of the simulators consider VMs as the building blocks of the virtualized cloud data centers.

To the best of our knowledge, no simulators introduced modeling for containerized cloud environments. "ContainerCloudSim" is proposed as a simulation environment for studying resource management techniques in CaaS environments. It is developed as an extension of the ClouSim simulation toolkit and provides an environment for evaluation of resource management techniques such as container scheduling, placement, and consolidation of containers. "ContainerCloudSim" uniquely enables researchers to consider resource management techniques for both virtualization types including the Operating System level virtualization/containers and system level virtualization/VMs side by side. For the Virtual Machine type, applications execute inside virtual machines and for the CaaS model, applications execute inside containers while the containers are placed in virtual machines. The proposed simulator models a container migration by stopping the container on the source host and starting it with a realistic delay on the destination host, which closely resembles current containerized environments. Moreover, ContainerCloudSim offers an environment to evaluate various (power-aware) resource management algorithms by providing diverse power models in a data center.

Main features

Overview of ContainerCloudSim functionalities:




The ContainerCloudSim package is included in CloudSim 4.0 can be downloaded from the CloudSim web page at GitHub:


Cloud Computing and Distributed Systems (CLOUDS) Laboratory
School of Computing and Information Systems
The University of Melbourne, Australia