Shorten & Alias 'docker ps' output
Problem:
The default 'docker ps' command has a rather verbose output. This (especially for me) is due to the sheer number of ports associated to containers.
As a result, I need a super wide terminal to actually accommodate for this, which I don't like. If you don't have a short terminal it ends up a right mess:
root@docker:/home/david# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e111963440ee nginx:alpine "nginx -g 'daemon ..." 2 days ago Up 2 days 80/tcp webapps_webserver_1
77dd8191c167 ghost:alpine "docker-entrypoint..." 2 days ago Up 2 days 2368/tcp webapps_ghost_1
5b798c3a43e2 nginx:alpine "nginx -g 'daemon ..." 2 days ago Up 2 days 0.0.0.0:**->**/tcp webapps_loadbalancer_1
2f53df4c3cf4 php:fpm-alpine "docker-php-entryp..." 2 days ago Up 2 days ***/tcp webapps_php-fpm_1
4971f1e4eb52 linuxserver/plexpy "/init" 2 days ago Up 2 days 0.0.0.0:****->****/tcp plexpy
f7ddaab86005 linuxserver/plex "/init" 2 days ago Up 2 days plex
5062001e7f1c linuxserver/syncthing "/init" 2 days ago Up 2 days 0.0.0.0:****->****/tcp, 0.0.0.0:****->****/tcp, 0.0.0.0:****->****/udp syncthing
308bb0afad01 splunk/splunk "/sbin/entrypoint...." 2 days ago Up 2 days 0.0.0.0:****->****/tcp, 0.0.0.0:****->****/tcp, 1514/tcp, 8089/tcp, 8191/tcp, 9997/tcp, 0.0.0.0:****->****/udp, 0.0.0.0:****->****/tcp, 0.0.0.0:****->****/udp splunk
261f8de36c40 f2cd9eb9cab9 "/bin/tini -- /usr..." 2 weeks ago Up 2 weeks 0.0.0.0:****->****/tcp, 0.0.0.0:****->****/tcp jenkins
root@docker:/home/david#
This actually looks better than it normally does....but check out that scroll bar that ghost has put in! If you're in a terminal window, the wrapping is awful.
Solution:
There's been many proposed solutions, however now the new --format parameter has been introduced we can format things rather more nicely:
root@docker:~$ docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"
CONTAINER ID IMAGE STATUS NAMES
e111963440ee nginx:alpine Up 2 days webapps_webserver_1
77dd8191c167 ghost:alpine Up 2 days webapps_ghost_1
5b798c3a43e2 nginx:alpine Up 2 days webapps_loadbalancer_1
2f53df4c3cf4 php:fpm-alpine Up 2 days webapps_php-fpm_1
4971f1e4eb52 linuxserver/plexpy Up 2 days plexpy
f7ddaab86005 linuxserver/plex Up 2 days plex
5062001e7f1c linuxserver/syncthing Up 2 days syncthing
308bb0afad01 splunk/splunk Up 2 days splunk
261f8de36c40 f2cd9eb9cab9 Up 2 weeks jenkins
But we don't want to have to be tying all that junk out every time we just want to see a quick list of containers! So, aliases to the rescue!
...or not, if you want to alias docker ps to the above output, it's best to use a bash function.
I've used the following in my .bashrc file:
docker() {
if [[ $@ == "ps" ]]; then
command docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"
else
command docker "$@"
fi
}
Essentially you're redefining the docker command and if you have a specific set of parameters to run another command instead. Easy huh!
Reload your session or re-read the .bashrc file and you're good to go:
root@docker:/home/david# source .bashrc
root@docker:/home/david# docker ps
CONTAINER ID IMAGE STATUS NAMES
e111963440ee nginx:alpine Up 2 days webapps_webserver_1
77dd8191c167 ghost:alpine Up 2 days webapps_ghost_1
5b798c3a43e2 nginx:alpine Up 2 days webapps_loadbalancer_1
2f53df4c3cf4 php:fpm-alpine Up 2 days webapps_php-fpm_1
4971f1e4eb52 linuxserver/plexpy Up 2 days plexpy
f7ddaab86005 linuxserver/plex Up 2 days plex
5062001e7f1c linuxserver/syncthing Up 2 days syncthing
308bb0afad01 splunk/splunk Up 2 days splunk
261f8de36c40 f2cd9eb9cab9 Up 2 weeks jenkins
root@docker:/home/david#
You can of course customise this easily by fiddling with the formatting options!