ctop: Container-Monitoring im Terminal, für Docker und runC
Was du siehst, wenn du ctop startest
docker stats liefert Zahlen. Mehr nicht. Kein Log, keine Shell, kein Weg, einen hängenden Container zu stoppen, ohne das Tool zu wechseln.
ctop macht daraus eine Oberfläche. Eine Zeile pro Container, im Sekundentakt aktualisiert: CPU-Last, Speicherverbrauch, Netzwerkdurchsatz, Lese- und Schreibraten. Sortierbar nach jeder Spalte, filterbar über ein Suchfeld. Fällt eine Zeile auf, öffnest du sie mit o und bekommst die Verläufe als Graph. Zwei optionale Spalten zeigen dir zusätzlich den Health-Check-Status und die Zahl der Neustarts, letztere ab dem sechsten Neustart rot. Das Tool braucht dafür keine Konfiguration und keinen Agent, es liest den Docker-Socket und zeichnet.
Wozu ctop, wenn es docker stats gibt?
docker stats zeigt eine Zahlentabelle und sonst nichts. ctop legt darüber eine bedienbare Oberfläche: Container sortieren und filtern, Logs und Shell öffnen, Container starten, stoppen, entfernen oder als Image sichern, alles ohne das Fenster zu verlassen.
Docker und runC in derselben Ansicht
ctop spricht zwei Container-Runtimes an. Der Docker-Connector nimmt DOCKER_HOST und funktioniert auf Linux, macOS und Windows. Der runC-Connector liest direkt aus /run/runc und läuft nur unter Linux, dafür ohne Docker-Daemon dazwischen.
Was du im Container-Menü machen kannst
Die Bedienung läuft komplett über Einzeltasten, ohne Modifier:
| Taste | Was passiert |
|---|---|
Enter |
Container-Menü öffnen |
l |
Logs anzeigen, t schaltet Zeitstempel um |
e |
Shell im Container öffnen |
o |
Einzelansicht mit Graphen |
f |
Container filtern |
c |
Spalten konfigurieren |
S |
Konfiguration speichern |
Aus dem Menü heraus startest, stoppst und entfernst du Container. Seit Version 0.8.3 gibt es zwei zusätzliche Einträge: stop + remove erledigt beides in einem Schritt mit Rückfrage, commit to image friert einen laufenden Container als lokales Image ein. Welche Shell e startet, legst du über --shell oder CTOP_SHELL fest.
Installieren
brew install eqms/ctop/ctop
Oder als Binary, ohne Paketmanager:
sudo curl -Lo /usr/local/bin/ctop \
https://github.com/eqms/ctop/releases/latest/download/ctop-0.8.8-linux-amd64
sudo chmod +x /usr/local/bin/ctop
Als Container:
docker run --rm -ti --name=ctop \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/eqms/ctop:latest
Es gibt Binaries für Linux, macOS und Windows, jeweils amd64, dazu arm64 für Linux und macOS. Jeder Release liefert die SHA256-Summen mit.
Warum dieser Fork und nicht das Original
Das Original von VektorLab hat seinen letzten Release am 22. März 2022 bekommen. Dieser Fork hält es am Laufen: aktuelle Go-Version, gepatchte Abhängigkeiten, Zugangsdaten werden in der Anzeige und in Debug-Logs maskiert. Warum ich das mache, steht auf der Projektseite.
ctop steht unter MIT-Lizenz, Copyright VektorLab. Der Quellcode liegt auf GitHub, Issues sind offen.