Docker is the most diffused containerization technology adopted in the DevOps workflow. Specifically, Docker allows shipping applications in Docker images, along with their dependencies and execution environment. Dockerfile is the core component of Docker, which defines how a Docker image should be composed. The literature shows that quality issues, such as violations of writing best practices (i.e., Dockerfile smells), are diffused among Dockerfiles. Smells can negatively impact the reliability of the resulting images, causing building failures, poor performance, and security issues. At the same time, there are no clear directions on how to measure and improve the quality of Docker images. The literature shows that composing high-quality Dockerfiles and Docker images is not a trivial task: There is a lack of knowledge and tools to assess and improve their quality. This thesis aims to advance the state-of-the-art in the assessment of the quality of Docker artifacts (i.e., Dockerfiles and Docker images). The first aim is to understand how developers perceive and address Dockerfile smells, allowing to provide a better support in terms of tools and guidelines. The second, is to investigate how developers improve the quality of Docker images (i.e., build and size), and also find out what quality aspects are relevant for their adoption, over alternates. Finally, this thesis aims at support developers in the automated definition of Dockerfiles, via deep learning, thereby reducing the effort and the introduced quality issues related to their manual composition. The contributions of this thesis lead to several lessons learned: First, not all the existing Dockerfile smells are considered a problem, and their severity depends on the context in which they appear. Second, developers prioritize performance over code quality (i.e., build time, image size, and security issues). Third, selecting the right base image is a crucial aspect to consider when defining a Dockerfile since it has a significant impact on the quality of the resulting Docker image. The achieved results revealed some new research directions regarding the definition of new tools to improve the quality of Dockerfiles and Docker images, along with ways to improve the current catalogs of Dockerfile smells.

Docker è la tecnologia di containerizzazione più diffusa adottata nel flusso di lavoro DevOps. In particolare, Docker consente di distribuire applicazioni in “immagini” Docker, contenenti tutte le loro dipendenze e configurazioni necessari per l’esecuzione. Il Dockerfile è il componente principale di Docker, che definisce come deve essere composta un'immagine Docker. La letteratura scientifica riporta che diversi problemi che affliggono la qualità del codice sono largamente diffusi nei Dockerfile, come per esempio le violazioni delle best practices di scrittura (i.e, Dockerfile smells). Questi possono avere un impatto negativo sulla affidabilità delle immagini risultanti causando, in primis, fallimenti nella compilazione, oltre che a impattare negativamente sulle prestazioni e la sicurezza. Allo stesso tempo, non ci sono indicazioni chiare su come misurare e migliorare la qualità delle immagini Docker. La letteratura mostra inoltre che, a causa di una mancanza di conoscenze e strumenti specifici di supporto per gli sviluppatori, comporre artefatti Docker di alta qualità non è semplice. Questa tesi si propone di avanzare lo stato dell'arte nella valutazione della qualità degli artefatti Docker (i.e, Dockerfile e immagini Docker). Il primo obiettivo è capire come i programmatori percepiscono e affrontano i Dockerfile smells, consentendo di fornire un migliore supporto in termini di strumenti e linee guida per la scrittura. Il secondo obiettivo è capire come i programmatori migliorano la qualità delle immagini Docker (ossia, tempo di compilazione e dimensioni), oltre che valutare quali sono gli aspetti di qualità rilevanti per la loro adozione rispetto ad alternative equivalenti. Infine, questa tesi mira a fare un primo passo per supportare gli sviluppatori nella definizione automatizzata di Dockerfile tramite reti neurali, con l’obiettivo di ridurre lo sforzo e i problemi di qualità introdotti dall’intervento manuale. I contributi di questa tesi possono essere raccolti nei seguneti punti: in primo luogo, non tutti i Dockerfile smells esistenti sono considerati un problema, e la loro gravità dipende dal contesto in cui compaiono. In secondo luogo, i programmatori danno priorità alle prestazioni rispetto alla qualità del codice (ossia, tempo di compilazione, dimensioni delle immagini e problemi di sicurezza). In terzo luogo, selezionare la giusta base image per un Dockerfile è un aspetto cruciale da considerare poiché ha un impatto significativo sulla qualità dell'immagine Docker finale. Oltretutto, i risultati ottenuti mostrano nuove direzioni di ricerca verso la definizione di nuovi strumenti (i.e., tool) per migliorare la qualità di Dockerfile e immagini Docker, insieme a metodologie per arricchire gli attuali cataloghi di best practices per la scrittura (i.e, Dockerfile smells).

Assessing and improving the quality od docker artifacts

ROSA, Giovanni
2024

Abstract

Docker is the most diffused containerization technology adopted in the DevOps workflow. Specifically, Docker allows shipping applications in Docker images, along with their dependencies and execution environment. Dockerfile is the core component of Docker, which defines how a Docker image should be composed. The literature shows that quality issues, such as violations of writing best practices (i.e., Dockerfile smells), are diffused among Dockerfiles. Smells can negatively impact the reliability of the resulting images, causing building failures, poor performance, and security issues. At the same time, there are no clear directions on how to measure and improve the quality of Docker images. The literature shows that composing high-quality Dockerfiles and Docker images is not a trivial task: There is a lack of knowledge and tools to assess and improve their quality. This thesis aims to advance the state-of-the-art in the assessment of the quality of Docker artifacts (i.e., Dockerfiles and Docker images). The first aim is to understand how developers perceive and address Dockerfile smells, allowing to provide a better support in terms of tools and guidelines. The second, is to investigate how developers improve the quality of Docker images (i.e., build and size), and also find out what quality aspects are relevant for their adoption, over alternates. Finally, this thesis aims at support developers in the automated definition of Dockerfiles, via deep learning, thereby reducing the effort and the introduced quality issues related to their manual composition. The contributions of this thesis lead to several lessons learned: First, not all the existing Dockerfile smells are considered a problem, and their severity depends on the context in which they appear. Second, developers prioritize performance over code quality (i.e., build time, image size, and security issues). Third, selecting the right base image is a crucial aspect to consider when defining a Dockerfile since it has a significant impact on the quality of the resulting Docker image. The achieved results revealed some new research directions regarding the definition of new tools to improve the quality of Dockerfiles and Docker images, along with ways to improve the current catalogs of Dockerfile smells.
30-apr-2024
Inglese
Docker è la tecnologia di containerizzazione più diffusa adottata nel flusso di lavoro DevOps. In particolare, Docker consente di distribuire applicazioni in “immagini” Docker, contenenti tutte le loro dipendenze e configurazioni necessari per l’esecuzione. Il Dockerfile è il componente principale di Docker, che definisce come deve essere composta un'immagine Docker. La letteratura scientifica riporta che diversi problemi che affliggono la qualità del codice sono largamente diffusi nei Dockerfile, come per esempio le violazioni delle best practices di scrittura (i.e, Dockerfile smells). Questi possono avere un impatto negativo sulla affidabilità delle immagini risultanti causando, in primis, fallimenti nella compilazione, oltre che a impattare negativamente sulle prestazioni e la sicurezza. Allo stesso tempo, non ci sono indicazioni chiare su come misurare e migliorare la qualità delle immagini Docker. La letteratura mostra inoltre che, a causa di una mancanza di conoscenze e strumenti specifici di supporto per gli sviluppatori, comporre artefatti Docker di alta qualità non è semplice. Questa tesi si propone di avanzare lo stato dell'arte nella valutazione della qualità degli artefatti Docker (i.e, Dockerfile e immagini Docker). Il primo obiettivo è capire come i programmatori percepiscono e affrontano i Dockerfile smells, consentendo di fornire un migliore supporto in termini di strumenti e linee guida per la scrittura. Il secondo obiettivo è capire come i programmatori migliorano la qualità delle immagini Docker (ossia, tempo di compilazione e dimensioni), oltre che valutare quali sono gli aspetti di qualità rilevanti per la loro adozione rispetto ad alternative equivalenti. Infine, questa tesi mira a fare un primo passo per supportare gli sviluppatori nella definizione automatizzata di Dockerfile tramite reti neurali, con l’obiettivo di ridurre lo sforzo e i problemi di qualità introdotti dall’intervento manuale. I contributi di questa tesi possono essere raccolti nei seguneti punti: in primo luogo, non tutti i Dockerfile smells esistenti sono considerati un problema, e la loro gravità dipende dal contesto in cui compaiono. In secondo luogo, i programmatori danno priorità alle prestazioni rispetto alla qualità del codice (ossia, tempo di compilazione, dimensioni delle immagini e problemi di sicurezza). In terzo luogo, selezionare la giusta base image per un Dockerfile è un aspetto cruciale da considerare poiché ha un impatto significativo sulla qualità dell'immagine Docker finale. Oltretutto, i risultati ottenuti mostrano nuove direzioni di ricerca verso la definizione di nuovi strumenti (i.e., tool) per migliorare la qualità di Dockerfile e immagini Docker, insieme a metodologie per arricchire gli attuali cataloghi di best practices per la scrittura (i.e, Dockerfile smells).
OLIVETO, Rocco
SCALABRINO, Simone
SANTUCCI DE MAGISTRIS, Filippo
Università degli studi del Molise
File in questo prodotto:
File Dimensione Formato  
Tesi_G_Rosa.pdf

embargo fino al 30/04/2025

Dimensione 5.14 MB
Formato Adobe PDF
5.14 MB Adobe PDF

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14242/190597
Il codice NBN di questa tesi è URN:NBN:IT:UNIMOL-190597