Usage
  • 202 views
  • 175 downloads

Studying Dependency Updates and a Framework for Multi-Versioning in Docker Containers

  • Author / Creator
    Gholami Ghasem Abad, Sara
  • Containerized software systems are becoming more popular and complex as they are one of the essential techniques that enable cloud computing. One of the enabling technologies for containerized software systems is the Docker framework. Docker is an open-source framework for deploying containers, lightweight, standalone, and executable units of software with all their dependencies (packages and libraries) that can run on any computing environment. Docker images facilitate deploying and upgrading systems as all of the dependencies required for a software package are included in an image. However, there exist several risks with running Docker images in production environments. One risky situation can occur when upgrading images, as an upgrade may result in many changing packages or libraries at once.
    Therefore, in this thesis, we study the Docker images and analyze them to identify the risks of package changes. Also, we propose our solution, DockerMV, to mitigate this risk by running multiple versions of an image at the same time.
    In this first part of this thesis, we analyze the official Docker image repositories that are available on Docker Hub, Docker's public registry that holds Docker images. For each image in these repositories, we extract details about its native, Node, and Python packages. Afterward, we investigate which types of applications have more package changes in their image upgrades. We find that, depending on the type of applications, the package changes have different trends. For example, Operating systems and Base Images repositories have a lower median number of changes. However, Analytics and Application Services repositories have the highest median number of package changes. Our findings show that practitioners should be extra cautious when doing in-place upgrades of images of such applications in their production environments.
    In the second part of this thesis, we provide a solution for mitigating this risk by applying software multi-versioning to Docker images. We present DockerMV, an open-source extension of the Docker framework that supports multi-versioning for containerized software systems. We demonstrate the usefulness of DockerMV from the performance point of view and test it on two open-source subject systems. In particular, we demonstrate how DockerMV can be used to balance the workload between Docker images that contain different versions of the same application. In both experiments, DockerMV maintained the system's performance while using a limited set of resources.

  • Subjects / Keywords
  • Graduation date
    Fall 2020
  • Type of Item
    Thesis
  • Degree
    Master of Science
  • DOI
    https://doi.org/10.7939/r3-0hg2-5p77
  • License
    Permission is hereby granted to the University of Alberta Libraries to reproduce single copies of this thesis and to lend or sell such copies for private, scholarly or scientific research purposes only. Where the thesis is converted to, or otherwise made available in digital form, the University of Alberta will advise potential users of the thesis of these terms. The author reserves all other publication and other rights in association with the copyright in the thesis and, except as herein before provided, neither the thesis nor any substantial portion thereof may be printed or otherwise reproduced in any material form whatsoever without the author's prior written permission.