Please use this identifier to cite or link to this item:
Author(s): David Alexandre Gomes Reis
Title: Live Docker Containers
Issue Date: 2020-07-21
Abstract: The use of containerization technologies for software development, such as Docker, is now widespread, with over 70000 Dockerfiles being found in projects from the GitHub platform as of October 2016. The use of these technologies has a few advantages, providing a secure, portable and efficient environment where applications can be executed. Currently, the usual workflow of a developer configuring a Docker environment consists of writing a Dockerfile, building the Dockerfile into a Docker image, instantiating that Docker image in a Docker container and verifying if the container is working as expected (using a tool or the command-line). If the container is not behaving as expected, then the developer has to make changes to the Dockerfile and repeat the process, until the desired behaviour is achieved. This process is often slow, based on trial-and-error, and therefore time consuming and frustrating for developers, as observed in a survey performed with students with some Docker experience. As such, reducing the temporal distance between editing a Dockerfile and observing the consequences of those changes on the containers that can be built from that Dockerfile (i.e. tightening the feedback loop) can reduce the debugging efforts required by the programmer. Live programming refers to the ability to obtain continuous feedback on a program while that program is being developed. Since software is usually developed on text editors/IDEs, live feedback is usually provided within these tools. The level of liveness in IDEs is related to the type and update frequency of the feedback provided. The existing tools that can help a developer working with Dockerfiles can be split into several categories: container status, performance monitoring, container management, infrastructure testing, static analysis and image build optimization. However, currently the only tools which provide live feedback are some static analysis tools. Therefore, the developer is restricted to the development workflow mentioned above, with little liveness in his environment. Providing more live dynamic feedback in the developer's environment is expected to lead to an increased efficiency of developers working on Dockerfiles. This can be achieved through the implementation of an IDE plugin which automatically builds, instantiates and extracts information from a Docker container while the developer writes the respective Dockerfile, providing continuous feedback on changes that the developer makes. In order to quantify the influence of providing more live dynamic feedback on the efficiency of developers, a user study was conducted.
Subject: Engenharia electrotécnica, electrónica e informática
Electrical engineering, Electronic engineering, Information engineering
Scientific areas: Ciências da engenharia e tecnologias::Engenharia electrotécnica, electrónica e informática
Engineering and technology::Electrical engineering, Electronic engineering, Information engineering
TID identifier: 202589501
Document Type: Dissertação
Rights: openAccess
Appears in Collections:FEUP - Dissertação

Files in This Item:
File Description SizeFormat 
414737.pdfLive Docker Containers5.77 MBAdobe PDFThumbnail

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.