
containerctl
A lightweight terminal UI for Docker container management, built for speed over remote SSH connections
Overview
containerctl removes the friction from managing containers over SSH.
It’s a lightweight CLI that lets you instantly inspect, control, and tail logs from containers — perfect for remote servers where you want speed, not tooling overhead.
It sits as a thin layer between the tview TUI framework and the Moby Docker client. It supports connecting to a remote Docker Engine API directly over SSH, so you can manage containers on a remote host without SSHing in manually.
TUI
The default view lists all containers on the connected host. Select a container with the arrow keys, then:
- Press
l to stream its logs in real time.
- Press
t to open an interactive shell session inside the container. This is also the preferred way to explore a running container's filesystem. Exit the shell as usual with exit.
- Press
f to browse the filesystem without a shell — useful for stopped containers or distroless images that have no shell. The view reads only the tar headers of the container's filesystem, so no data is extracted. Navigate into directories with Enter or use .. to go up.
- Press
s / x to start or stop a container, or p / u to pause or unpause it.
Press Esc from any sub-view to return to the container list, or q to quit.
Install
Download the binary for your platform from the releases page.
macOS (Apple Silicon)
VERSION=v0.3.0 # replace with the desired version
curl -LO https://github.com/Br0ce/containerctl/releases/download/${VERSION}/containerctl-${VERSION}-darwin-arm64
# Verify the checksum against the value published on the releases page
shasum -a 256 containerctl-${VERSION}-darwin-arm64
chmod +x containerctl-${VERSION}-darwin-arm64
sudo mv containerctl-${VERSION}-darwin-arm64 /usr/local/bin/containerctl
containerctl --version
Linux (amd64)
VERSION=v0.3.0 # replace with the desired version
curl -LO https://github.com/Br0ce/containerctl/releases/download/${VERSION}/containerctl-${VERSION}-linux-amd64
# Verify the checksum against the value published on the releases page
sha256sum containerctl-${VERSION}-linux-amd64
chmod +x containerctl-${VERSION}-linux-amd64
sudo mv containerctl-${VERSION}-linux-amd64 /usr/local/bin/containerctl
containerctl --version
Examples
# Connect to local Docker
containerctl
# Connect to remote host using default SSH key from ~/.ssh/config
containerctl --host my-host
# Connect to remote host using with SSH key
containerctl --host my-host:23 --identity-file ~/.ssh/id_rsa
# Connect to remote host with username embedded in host and password prompted
containerctl --host username@my-host --ask-password true
Install from Source
Requirements
git clone https://github.com/Br0ce/containerctl.git
cd containerctl
make build
The binary will be placed at ./bin/containerctl.
Usage
./bin/containerctl
# or
make run
Development
Install dependencies and tooling:
make setup
Available make targets:
| Target |
Description |
build |
Build the binary to ./bin/ |
run |
Run directly via go run |
test |
Run tests (short, parallel) |
test-v |
Run tests with verbose output |
test-race |
Run tests with race detector |
lint |
Run golangci-lint |
format |
Format code with go fmt |
tidy |
Tidy and vendor dependencies |
clean |
Remove build artifacts |
Acknowledgements
- Inspired by k9s
- TUI built with tview by @rivo
- Docker integration via the Moby Go client
License
Apache 2.0 — see LICENSE.