Port: Simplifying Docker Management for Developers and DevOps
Port is a tool designed to manage multiple Docker images and their tags efficiently. It enables users to run containers, create snapshots, and handle downloaded images with ease.
Key Features:
Simplified Container Operations: Run containers effortlessly using straightforward commands.
Seamless Stoppage: Stop running containers without hassle.
Container Tracking: List all containers to monitor their statuses effectively.
Resource Management: Remove unwanted containers to optimize resource usage.
Reset Functionality: Revert containers to their original state for reusability.
State Preservation: Save container states for future use or backups.
Audience & Benefit:
Ideal for developers and DevOps engineers working with containerized services, Port streamlines management processes. It offers an efficient alternative to complex Docker CLI commands, even for remote engine operations.
Installation:
Port can be installed via winget, making setup straightforward and accessible for users familiar with the command line interface.
This description adheres to a professional tone, focusing on benefits while avoiding any hype or markdown formatting.
README
port
A small CLI for running and snapshotting Docker containers from a YAML config,
with an MCP server so AI agents can drive the same workflows.
Install
Scoop
scoop bucket add maple 'https://github.com/kevinboss/maple.git'
scoop install port
Winget
winget install kevinboss.port
Manual
Grab a binary from the releases page
and put it on your PATH.
Configuration
Port reads ~/.port (or %USERPROFILE%\.port on Windows). If the file does
not exist, a default one is written on first run. You can also drop a
docker-compose.yml next to where you invoke port and the services in it are
merged in.
identifier is the human-friendly name port uses everywhere (commands, container
names, tags); imageName is the actual Docker image; imageTags are the tags
port knows how to launch.
Commands
port config prints the path of the config file. Pass --open to open it in
your editor.
port list [identifier] shows every configured image, every tag, every
snapshot, and the running container if any. With an identifier, the listing is
restricted to that group.
port pull fetches the image. Per-layer download progress is
shown live.
port run [-r] launches a container. Any container holding
the same host port is stopped first. -r recreates the container instead of
restarting an existing one. Pulls the image if it isn't local yet.
port stop stops a running container by its full name (e.g.
Nginx.alpine). With no name, you get a picker.
port reset stops, removes, and recreates a container — useful
to discard mutations made inside it.
port commit [-t tag] [-s] [-o] snapshots a running container
into a new image. -t sets the tag (defaults to a timestamp); -s switches
the running container to the new snapshot; -o overwrites the source tag.
port remove [-r] removes the image and any containers using
it. -r also removes descendant snapshot images.
port prune [identifier] removes dangling (digest-only) images. Restrict to
one identifier with the optional argument.
MCP server
port mcp starts a Model Context Protocol
server over stdio. AI agents can then drive port the same way you do from the
shell.
The exposed tools mirror the CLI verbs: run, stop, reset, commit,
pull, remove, prune, list, config. A few have stricter inputs than
their CLI siblings — reset always requires a container name, commit
requires an explicit tag — to remove ambiguity for an agent.