sen
is a terminal user interface for docker engine:
- it can interactively manage your containers and images:
- manage? start, stop, restart, kill, delete,...
- you are able to inspect containers and images
- sen can fetch logs of containers and even stream logs real-time
- all buffers support searching and filtering
- sen receives real-time updates from docker when anything changes
- e.g. if you create a container in another terminal, sen will pick it up
- sen notifies you whenever something happens (and reports slow queries)
- supports a lot of vim-like keybindings (
j
,k
,gg
,/
, ...)
I strongly advise to run sen
from a docker container provided on docker hub:
$ docker pull tomastomecek/sen
This repository has set up automated builds on docker hub. In case you run into some issue, try pulling latest version before opening issue. You should run sen
in containers like this:
$ docker run -v /run/docker.sock:/run/docker.sock -ti -e TERM=$TERM tomastomecek/sen
You can easily build a docker image with sen inside:
$ docker build --tag=$USER/sen git://github.com/tomastomecek/sen
$ docker run -v /run/docker.sock:/run/docker.sock -ti -e TERM=$TERM $USER/sen
sen
releases are available on PyPI:
$ pip install sen
$ sen
sen
is a python 3 only project. I recommend using at least python 3.4. This is how you can install sen
from git:
$ git clone https://github.com/TomasTomecek/sen
$ cd sen
$ ./setup.py install
$ sen
Or even run sen
straight from git:
$ git clone https://github.com/TomasTomecek/sen
$ cd sen
$ PYTHONPATH="$PWD:$PYTHONPATH" ./sen/cli.py
Bear in mind that unix socket for docker engine needs to be accessible. By default it's located at /run/docker.sock
.
Since I am heavy vim
user, these keybindings are trying to stay close to vim.
/ search (provide empty query to disable searching)
n next search occurrence
N previous search occurrence
f4 display only lines matching provided query (provide empty query to clear filtering)
* main listing provides additional filtering (for more info, check Listing Section)
* example query: "fed" - display lines containing string "fed"
ctrl o next buffer
ctrl i previous buffer
x remove buffer
h, ? show help
gg go to first item
G go to last item
j go one line down
k go one line up
pg up
ctrl u go 10 lines up
pg down
ctrl d go 10 lines down
@ refresh listing
f4 display only lines matching provided query (provide empty query to clear filtering)
* space-separated list of query strings, currently supported filters are:
* t[ype]=c[ontainer[s]]
* t[ype]=i[mage[s]]
* s[tate]=r[unning])
example query may be:
* "type=container" - show only containers (short equivalent is "t=c")
* "type=image fedora" - show images with string "fedora" in name (equivalent "t=i fedora")
i inspect image
d remove image (irreversible!)
i inspect container
l display logs of container
f follow logs of container
d remove container (irreversible!)
s stop container
t start container
r restart container
p pause container
u unpause container
X kill container
Since I started using docker, I always dreamed of having a docker TUI. Something like tig, htop or alot. Some appeared over time. Such as docker-mon or ctop. Unfortunately, those are not proper docker TUIs. They are meant for monitoring and diagnostics.
So I realized that if I want make my dream come true, I need to do it myself. That's where I started working on sen (dream in Slovak).