Make docker ps work on normal sized terminals
Written on 28 Jun 2017
I’m sorry folks, but I cannot call this anything other than silly interface design:
[~]% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8467772b79aa haproxy:1.7 "/docker-entrypoin..." 5 minutes ago Up 5 minutes 127.0.0.235:80->80/tcp, 127.0.0.235:443->443/tcp, 127.0.0.235:8877->8877/tcp haproxy
726bc8270037 teamwork/launchpad:dev-env "/bin/sh -c ./laun..." 5 minutes ago Up 5 minutes 9001/tcp launchpad
980c57aab6fa elasticsearch:2.3 "/docker-entrypoin..." 7 minutes ago Up 7 minutes (healthy) 9200/tcp, 9300/tcp elasticsearch
8527ee711c3e teamwork/deskcustomerportal:dev-env "/bin/sh -c 'watch..." About an hour ago Up 24 minutes 127.0.0.235:5150->5150/tcp deskcustomerportal
d5d55fe9806c teamwork/minio "minio server /export" 2 days ago Up 7 minutes 127.0.0.235:9000->9000/tcp minio
de48a0dbe4d2 rabbitmq:3-management "docker-entrypoint..." 5 days ago Up 7 minutes (healthy) 4369/tcp, 5671/tcp, 127.0.0.235:5672->5672/tcp, 15671/tcp, 25672/tcp, 127.0.0.235:15672->15672/tcp rabbitmq
72563020b8ef teamwork/desk:dev-env "/bin/sh -c ./desk" 7 days ago Restarting (127) 52 seconds ago desk
35209ff049e6 redis:alpine "docker-entrypoint..." 7 days ago Up 7 minutes (healthy) 6379/tcp redis
89bba4de1280 teamwork/db:dev-env "docker-entrypoint..." 7 days ago Up 24 minutes (healthy) 127.0.0.235:3306->3306/tcp db
260 characters wide for a common command… It looks terrible on any vaguely normal sized terminal:
It’s exactly 56 characters too much for even a full-screen xterm(!) Guess I’ll have to buy a new 32 inch 4k HD screen to run Docker?
I’m not the first person who notices this idiotic design
issue, and a --format
switch was
added after enough people complained.
Compare:
[~]% docker ps --format "table {{.ID}} {{.Names}}\t{{.Image}}\t{{.Status}}"
CONTAINER ID NAMES IMAGE STATUS
8467772b79aa haproxy haproxy:1.7 Up 17 minutes
726bc8270037 launchpad teamwork/launchpad:dev-env Up 17 minutes
980c57aab6fa elasticsearch elasticsearch:2.3 Up 19 minutes (healthy)
8527ee711c3e deskcustomerportal teamwork/deskcustomerportal:dev-env Up 36 minutes
d5d55fe9806c minio teamwork/minio Up 19 minutes
de48a0dbe4d2 rabbitmq rabbitmq:3-management Up 19 minutes (healthy)
72563020b8ef desk teamwork/desk:dev-env Restarting (127) 19 seconds ago
35209ff049e6 redis redis:alpine Up 19 minutes (healthy)
89bba4de1280 db teamwork/db:dev-env Up 36 minutes (healthy)
Still a bit larger than the standard 80 columns, but only by a bit (108 in this specific example), which is a hell of a lot better than 260.
You can add this to ~/.config/docker.json
– ugh – to have it apply
automatically:
{
"psFormat": "table {{.ID}} {{.Names}}\t{{.Image}}\t{{.Status}}",
[...]
}
This is not only easier than a shell alias, but will also make it work for
docker container ls
.
You can check man docker-container-ls
for the documentation on --format
.
The lesson here is to use safe and sane defaults people … not everyone uses porn-sized terminal windows. Some of us have normal-sized windows!