Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"creators": [
{
"name": "Gab-Momoh, Raphael",
"affiliation": "Paynautik Limited",
"affiliation": "Andela",
"orcid": "0009-0000-9090-7957"
}
],
"license": "MIT",
"license": "mit",
"keywords": [
"containers",
"Docker",
Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ type: software
authors:
- family-names: Gab-Momoh
given-names: Raphael
affiliation: Paynautik Limited
affiliation: Andela
orcid: "https://orcid.org/0009-0000-9090-7957"
repository-code: "https://github.com/raphgm/container-preflight"
license: MIT
Expand Down
2 changes: 1 addition & 1 deletion paper/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
\author[1]{Raphael Gab-Momoh\corref{cor1}}
\ead{rdgabmomoh@gmail.com}
\cortext[cor1]{Corresponding author. ORCID: \href{https://orcid.org/0009-0000-9090-7957}{0009-0000-9090-7957}}
\affiliation[1]{organization={Paynautik Limited},city={Lagos},country={Nigeria}}
\affiliation[1]{organization={Andela},city={Lagos},country={Nigeria}}

\begin{abstract}
Containerized projects that work on one machine routinely fail on another: an image lacks the host's CPU architecture, a Compose file needs more memory than the Docker virtual machine has, a \texttt{COPY} source is excluded by \texttt{.dockerignore}, a port is already taken. Existing tools inspect either the artifacts (Dockerfile linters) or the host (daemon diagnostics), never both, and Docker itself reports only the first failure it reaches. We present \tool{}, an approach and tool that predicts deployment failures before anything runs by joining three views: requirements extracted from Compose files and Dockerfiles with Docker's own parsers, a capability profile of the host (including the virtual machine that Docker Desktop and Colima run on macOS), and image metadata read directly from registries. Checks that depend on facts that cannot be established are grouped under a single root cause through an explicit causal graph, and a learning component turns observed failures into shareable rules that are generalized by later failures and specialized by successful runs. We estimated 95k GitHub issues across 32 failure categories, correcting search counts by verified precision, and labeled two stratified samples. On a held-out sample drawn after the rules were frozen, \tool{} fully predicted 33\% of local Docker failures and at least partially predicted 58\% (58\% weighted by category prevalence); categories it does not target are dominated by runtime behavior such as DNS resolution and health checks. On two real engines (Colima and Docker Desktop) on the same machine, 8 of 11 initial predictions matched the actual failure, 6 word for word, and the same project received different, confirmed predictions per engine. \todo{Inter-rater agreement (Cohen's $\kappa$) on 40 held-out issues.}
Expand Down
Loading