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.
Behavior
Local mode (no --host)
Connects to a local Docker API-compatible socket using the first available option:
DOCKER_HOST, DOCKER_API_VERSION, DOCKER_CERT_PATH or DOCKER_TLS_VERIFY environment variable
--docker-host flag
- Default:
unix:///var/run/docker.sock
Remote mode (--host)
Connects securely over SSH. Host key verification is enforced via ~/.ssh/known_hosts.
If a ~/.ssh/config entry matches the given host, values for HostName, Port, User, or IdentityFile are read from it and take precedence over command-line arguments to replicate OpenSSH behavior.
Username is resolved in this order:
--username flag
user@hostname syntax in --host
- Current system user
Authentication uses password if --ask-password is set, otherwise a private key resolved in this order:
--identity-file flag (must be inside ~/.ssh/)
~/.ssh/config IdentityFile entry for the host
- Default keys:
~/.ssh/id_ed25519, id_rsa, id_ecdsa
Docker Host on the remote host (note: DOCKER_HOST, DOCKER_API_VERSION, DOCKER_CERT_PATH and DOCKER_TLS_VERIFY are ignored in remote mode):
--docker-host flag
- Default:
unix:///var/run/docker.sock
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

Requirements
Installation
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.