Docker ps and docker compose ps formats different after upgrading docker for mac to: 4.23.0,120376

In short, I upgraded to docker for mac via Homebrew to the latest and I noticed that docker-compose ps or docker compose ps is not really truncating the COMMAND column in the output anymore. I’ve been playing with the formatting and I can at least tell it to NOT show the COMMAND column in it’s full glory, but I was wondering if there’s some other reason that it’s not formatting the way it used to prior to upgrade?

Here’s some info about my system:

dbaber@atlas:~$ brew info --cask docker
==> docker: 4.23.0,120376 (auto_updates)
https://www.docker.com/products/docker-desktop
/usr/local/Caskroom/docker/4.23.0,120376 (120B)
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/d/docker.rb
==> Names
Docker Desktop
Docker Community Edition
Docker CE
==> Description
App to build and share containerized applications and microservices
==> Artifacts
Docker.app (App)
Docker.app/Contents/Resources/bin/docker-compose -> /usr/local/bin/docker-compose (Binary)
Docker.app/Contents/Resources/bin/docker-credential-desktop -> /usr/local/bin/docker-credential-desktop (Binary)
Docker.app/Contents/Resources/bin/docker-credential-ecr-login -> /usr/local/bin/docker-credential-ecr-login (Binary)
Docker.app/Contents/Resources/bin/docker-credential-osxkeychain -> /usr/local/bin/docker-credential-osxkeychain (Binary)
Docker.app/Contents/Resources/bin/docker-index -> /usr/local/bin/docker-index (Binary)
Docker.app/Contents/Resources/bin/hub-tool -> /usr/local/bin/hub-tool (Binary)
Docker.app/Contents/Resources/etc/docker.bash-completion -> /usr/local/etc/bash_completion.d/docker (Binary)
Docker.app/Contents/Resources/etc/docker.zsh-completion -> /usr/local/share/zsh/site-functions/_docker (Binary)
Docker.app/Contents/Resources/etc/docker.fish-completion -> /usr/local/share/fish/vendor_completions.d/docker.fish (Binary)
Docker.app/Contents/Resources/bin/kubectl -> /usr/local/bin/kubectl.docker (Binary)
Docker.app/Contents/Resources/bin/com.docker.cli -> /usr/local/bin/com.docker.cli (Binary)
Docker.app/Contents/Resources/bin/com.docker.vpnkit -> /usr/local/bin/vpnkit (Binary)
Docker.app/Contents/Resources/bin/docker -> /usr/local/bin/docker (Binary)
==> Analytics
install: 18,827 (30 days), 50,357 (90 days), 118,594 (365 days)

baber@atlas:~$ docker-compose version
Docker Compose version v2.21.0-desktop.1

dbaber@atlas:~$ docker --version
Docker version 24.0.6, build ed223bc

dbaber@atlas:~$ which docker
/Users/dbaber/.docker/bin/docker

dbaber@atlas:~$ ll /Users/dbaber/.docker/bin/docker
lrwxr-xr-x@ 1 dbaber  staff  54 Apr 17 14:31 /Users/dbaber/.docker/bin/docker@ -> /Applications/Docker.app/Contents/Resources/bin/docker

dbaber@atlas:~$ which docker-compose
/Users/dbaber/.docker/bin/docker-compose

dbaber@atlas:~$ ll /Users/dbaber/.docker/bin/docker-compose
lrwxr-xr-x  1 dbaber  staff  62 Sep 19 13:40 /Users/dbaber/.docker/bin/docker-compose@ -> /Applications/Docker.app/Contents/Resources/bin/docker-compose

Here’s like an example of what I’m seeing (notice how COMMAND is truncated and well docker ps has a --no-trunc option but docker-compose ps or docker compose ps doesn’t):

baber@atlas:~$ docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED        STATUS        PORTS                                                                                        NAMES
f73a88e49701   sldockerdev/nginx               "/bin/sh -c 'service…"   23 hours ago   Up 23 hours   80/tcp, 0.0.0.0:8080->8080/tcp                                                               sldockerdev_nginx
21f724a162cf   sldockerdev/slingshot           "/bin/bash -l -c 'cd…"   23 hours ago   Up 23 hours   0.0.0.0:5000->5000/tcp                                                                       slingshot
915a0bacb0bf   sldockerdev/blackjack-backend   "/bin/bash -l -c 'cd…"   23 hours ago   Up 23 hours                                                                                                blackjack_backend
98f0bd5cde25   sldockerdev/blackjack-api       "bash -l -c 'cd src/…"   23 hours ago   Up 23 hours   0.0.0.0:3000->3000/tcp                                                                       blackjack_api
10a9c9a4104b   sldockerdev/postfix             "/bin/sh -c /opt/pos…"   23 hours ago   Up 23 hours   0.0.0.0:25->25/tcp                                                                           sldockerdev_postfix
57fe81a63272   sldockerdev/idp                 "/bin/bash -l -c 'cd…"   23 hours ago   Up 23 hours   0.0.0.0:5001->5001/tcp                                                                       idp
d30f22be42ff   rabbitmq:3.6-management         "docker-entrypoint.s…"   23 hours ago   Up 23 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   sldockerdev_mq
a7ed6f424b6e   sldockerdev/postgres            "docker-entrypoint.s…"   23 hours ago   Up 23 hours   0.0.0.0:5432->5432/tcp                                                                       sldockerdev_db
23c9b8f7d52d   memcached:latest                "docker-entrypoint.s…"   23 hours ago   Up 23 hours   0.0.0.0:11211->11211/tcp                                                                     sldockerdev-memcached-1

This is what docker-compose ps gives me now:

dbaber@atlas:~/src/sldockerdev$  [master|…3⚑ 1]
13:22 $ docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.slingshot.yml ps -a
NAME                      IMAGE                           COMMAND                                                                                                                                                          SERVICE             CREATED        STATUS        PORTS
blackjack_api             sldockerdev/blackjack-api       "bash -l -c 'cd src/blackjack && /apps/sl-libblackjack/local/bin/starman -Ilib -MBlackjack -MBlackjack::Schema --port 3000 blackjack.psgi'"                      blackjack-api       23 hours ago   Up 23 hours   0.0.0.0:3000->3000/tcp
blackjack_backend         sldockerdev/blackjack-backend   "/bin/bash -l -c 'cd src/blackjack && cadillac backend'"                                                                                                         blackjack-backend   23 hours ago   Up 23 hours
idp                       sldockerdev/idp                 "/bin/bash -l -c 'cd src/idp && . ~/.idp_env && perl -Ilib -I/apps/idp/local/lib/perl5 scripts/identity-server.pl daemon -l \"https://*:5001\"'"                 idp                 23 hours ago   Up 23 hours   0.0.0.0:5001->5001/tcp
sldockerdev-memcached-1   memcached:latest                "docker-entrypoint.sh memcached"                                                                                                                                 memcached           23 hours ago   Up 23 hours   0.0.0.0:11211->11211/tcp
sldockerdev_db            sldockerdev/postgres            "docker-entrypoint.sh postgres"                                                                                                                                  db                  23 hours ago   Up 23 hours   0.0.0.0:5432->5432/tcp
sldockerdev_mq            rabbitmq:3.6-management         "docker-entrypoint.sh rabbitmq-server"                                                                                                                           mq                  23 hours ago   Up 23 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp
sldockerdev_nginx         sldockerdev/nginx               "/bin/sh -c 'service nginx start'"                                                                                                                               nginx               23 hours ago   Up 23 hours   80/tcp, 0.0.0.0:8080->8080/tcp
sldockerdev_postfix       sldockerdev/postfix             "/bin/sh -c /opt/postfix.sh"                                                                                                                                     postfix             23 hours ago   Up 23 hours   0.0.0.0:25->25/tcp
slingshot                 sldockerdev/slingshot           "/bin/bash -l -c 'cd src/slingshot && . ~/.slingshot_env && perl -Ilib -I/apps/slingshot/local/lib/perl5 scripts/api-server.pl prefork -l \"https://*:5000\"'"   slingshot           23 hours ago   Up 23 hours   0.0.0.0:5000->5000/tcp

So yeah why this is showing me the ENTIRE command line now is concerning. So yeah I removed this COMMAND column in some custom --format stuff but CREATED doesn’t really look great either:

dbaber@atlas:~/src/sldockerdev$  [master|…3⚑ 1]
13:24 $ docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.CreatedAt}}\t{{.Status}}\t{{.Ports}}'
NAMES                     IMAGE                           CREATED AT                      STATUS        PORTS
sldockerdev_nginx         sldockerdev/nginx               2023-09-19 14:05:48 -0500 CDT   Up 23 hours   80/tcp, 0.0.0.0:8080->8080/tcp
slingshot                 sldockerdev/slingshot           2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:5000->5000/tcp
blackjack_backend         sldockerdev/blackjack-backend   2023-09-19 14:05:48 -0500 CDT   Up 23 hours
blackjack_api             sldockerdev/blackjack-api       2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:3000->3000/tcp
sldockerdev_postfix       sldockerdev/postfix             2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:25->25/tcp
idp                       sldockerdev/idp                 2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:5001->5001/tcp
sldockerdev_mq            rabbitmq:3.6-management         2023-09-19 14:05:48 -0500 CDT   Up 23 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp
sldockerdev_db            sldockerdev/postgres            2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:5432->5432/tcp
sldockerdev-memcached-1   memcached:latest                2023-09-19 14:05:48 -0500 CDT   Up 23 hours   0.0.0.0:11211->11211/tcp

How do you get that relative date string in the CREATE column? Also what changed with docker compose ps that it doesn’t truncate the COMMAND column anymore?

I haven’t noticed that additional column in the output of Docker Compose before, but you can get the result as Json.

docker compose ps --format json

to find what fields it supports. To format the output to be user friendly, you can use jq: jq — Homebrew Formulae

docker compose ps --format json | jq

It shows the “RunningFor” field so you could get it this way:

docker compose ps --format '{{ .RunningFor }}'

I’m not sure why it is called “RunningFor”. I tested it with a stopped container so it wasn’t running for 33 hours shown by compose but it was created exactly then.

Indeed, I don’t think that was a good change either, but it could also be a bug.

1 Like

Thanks for the tip on the showing the JSON. This seems to be good enough to get by and be readable:

docker compose ps -a --format 'table {{.Name}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}\t{{.Ports}}'

If you look at the docs here it shows COMMAND truncated properly in the output:

Ok, for the record what I probably want is this with the SERVICE col:

dbaber@atlas:~/src/sldockerdev$  [master|…3⚑ 1]
05:58 $ docker compose ps -a --format 'table {{.Name}}\t{{.Image}}\t{{.Service}}\t{{.RunningFor}}\t{{.Status}}\t{{.Ports}}'
NAME                      IMAGE                           SERVICE             CREATED        STATUS        PORTS
blackjack_api             sldockerdev/blackjack-api       blackjack-api       15 hours ago   Up 14 hours   0.0.0.0:3000->3000/tcp
blackjack_backend         sldockerdev/blackjack-backend   blackjack-backend   15 hours ago   Up 15 hours
idp                       sldockerdev/idp                 idp                 15 hours ago   Up 15 hours   0.0.0.0:5001->5001/tcp
sldockerdev-memcached-1   memcached:latest                memcached           15 hours ago   Up 15 hours   0.0.0.0:11211->11211/tcp
sldockerdev_db            sldockerdev/postgres            db                  15 hours ago   Up 15 hours   0.0.0.0:5432->5432/tcp
sldockerdev_mq            rabbitmq:3.6-management         mq                  15 hours ago   Up 15 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp
sldockerdev_nginx         sldockerdev/nginx               nginx               15 hours ago   Up 15 hours   80/tcp, 0.0.0.0:8080->8080/tcp
sldockerdev_postfix       sldockerdev/postfix             postfix             15 hours ago   Up 15 hours   0.0.0.0:25->25/tcp
slingshot                 sldockerdev/slingshot           slingshot           15 hours ago   Up 15 hours   0.0.0.0:5000->5000/tcp