I thought this would be hard, but turns out the following oneliner does it, with maybe no sideeffects ?
echo 'docker() { [ "$1" = "sh" ] && docker exec -it "$2" sh || command docker "$@"; }' >> ~/.bashrc && source ~/.bashrc
This creates a bash alias for “docker ps” , every other command should run as normal
Now I just need to remember to run this one liner on every single computer I use in the future…
dit="docker exec -it $@"Seems more flexible to me. Also, you shouldn’t give functions or variables the same names as binaries.
Not all docker containers contain a shell binary.. You can still propose an issue to moby, the upstream of docker, though.
How do you go inside those containers and poke around then ?

Jokes aside, you create a custom Dockerfile and copy a statically compiled shell binary.
Always wondered why this wasn’t automated, from an ergonomics perspective, a command that lets me open a shell could detect that no shell exists, and then do as you said, without me having to lift a finger. It’s not very unix-y, but it could be a sort of plug-in for Docker CLIs.
This is an excellent idea. Fortunately you’re not the first to have it ;-)
You should look into
alias.



