Software Open Access

Modus: A Datalog Dialect for Building Container Images

Tomy, Chris; Wang, Tingmao; Barr, Earl; Mechtaev, Sergey

This software is an artifact used to reproduce the results of our paper. Below is the abstract of our paper.

 

Containers help share and deploy software by packaging it with all its dependencies. Tools, like Docker or Kubernetes, spawn containers from images as specified by a build system’s language, such as Dockerfile. A build system takes many parameters to build an image, including OS and application versions. These build parameters can interact: setting one can restrict another. Dockerfile lacks support for reifying and constraining these interactions, thus forcing developers to write a build script per workflow. As a result, developers have resorted to creating ad hoc solutions such as templates or domain-specific frameworks that harm performance and complicate maintenance because they are verbose and mix languages.

To address this problem, we introduce Modus, a Datalog dialect for building container images. Modus' key insight is that container definitions naturally map to proof trees of Horn clauses. In these trees, container configurations correspond to logical facts, build instructions correspond to logic rules, and the build tree is computed as the minimal proof of the Datalog query specifying the target image. Modus relies on Datalog’s expressivity to specify complex workflows with concision and facilitate automatic parallelisation.

Files (3.8 GB)
Name Size
FSE2022ArtifactSubmission.zip
md5:75868aa552372b9ce3275b01da686399
667.4 kB Download
fse22-artifact-repository.zip
md5:fc10c7d515f374894d006de813de2189
3.8 GB Download
README.md
md5:c0dcd779787303b560976c6ecf81759d
256 Bytes Download
65
13
views
downloads
All versions This version
Views 6532
Downloads 134
Data volume 10.9 GB7.5 GB
Unique views 4523
Unique downloads 83

Share

Cite as