CoMICon: A co-operative management system for docker container images
Docker containers are becoming an attractive implementation choice for next-generation microservices-based applications. When provisioning such an application, container (microservice) instances need to be created from individual container images. Starting a container on a node, where images are locally available, is fast but it may not guarantee the quality of service due to insufficient resources. When a collection of nodes are available, one can select a node with sufficient resources. However, if the selected node does not have the required image, downloading the image from a different registry increases the provisioning time. Motivated by these observations, in this paper, we present CoMICon, a system for co-operative management of Docker images among a set of nodes. The key features of CoMICon are: (1) it enables a co-operative registry among a set of nodes, (2) it can store or delete images partially in the form of layers, (3) it facilitates the transfer of image layers between registries, and (4) it enables distributed pull of an image while starting a container. Using these features, we describe - (i) high availability management of images and (ii) provisioning management of distributed microservices based applications. We extensively evaluate the performance of CoMICon using 142 real, publicly available images from Docker hub. In contrast to state-of-the-art full image based approach, CoMICon can increase the number of highly available images up to 3x while reducing the application provisioning time by 28% on average.