Ducttape logo

Build, run & share
VM images like containers

A Dockerfile-like workflow for cloud images and virtual machines

View on GitHub ↗

Quick demo

Machinefile

FROM fedora-cloud:44

RUN dnf install -y httpd && \
    dnf clean all && \
    systemctl enable httpd

Commands

$ ducttape build -t my-httpd -f Machinefile
$ ducttape run my-httpd --publish 8080:80
$ curl http://$(ducttape ports my-httpd :80)/
ducttape build -t my-httpd -f Machinefile
  Building image my-httpd from fedora-cloud:44 ...
  VM ready.  Running Machinefile...  Stopping VM...
  Built image my-httpd

ducttape run my-httpd --publish 8080:80
  VM ducttape-my-httpd started (pid 12345)

curl http://$(ducttape ports my-httpd :80)/
  <!doctype html>
  <html>
  <head>... Fedora HTTP Server Test Page ...

About

Ducttape bridges container-like workflows with VM management. Write a Machinefile, build an image, run it as a VM, and share it via OCI registries.

Ducttape is a command-line tool designed to bridge the gap between container-like workflows and virtual machine (VM) management. It allows developers to build, run, and share VM images using a syntax and lifecycle similar to Docker or Podman.

Inspired by Dockerfiles, Machinefiles describe how to customize a base cloud image, installing packages, configuring services, and enabling systemd units, producing a reusable QCOW2 disk image.

Read the docs on GitHub ↗

Features

Reuse your Containerfiles

FROM, RUN, COPY - your existing Dockerfiles and Containerfiles work as Machinefiles with little to no changes.

OCI registries

Push and pull VM images to any OCI registry. No special infrastructure required.

Multi-phase builds

Pre/post Machinefile hooks for SSH configuration before the build and cleanup afterwards.

Pluggable back-end

Lima by default, self-contained macadam also supported.