It is always amazing how small things can aggravate you. One of the biggest irritants I have with
docker is how it has handled the
It was sending
docker --help and
docker COMMAND --help to
stderr. This caused Red Hat’s Quality Engineering (QE) teams headaches since they wanted to automate testing for things like new options, or making sure the options in the man page matched those in the usage page.
QE would end up doing things like:
docker --help 2&>1 | cat ...
And it would never quite work correctly. Besides, a user running a
command --help should not be considered an error.
But a far bigger irritant was when running a docker run command and mis-typing an option, like so:
docker run --itq rhel7 /bin/sh flag provided but not defined: -itq Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach= Attach to STDIN, STDOUT or STDERR. --add-host= Add a custom host-to-IP mapping (host:ip) -c, --cpu-shares=0 CPU shares (relative weight) --cap-add= Add Linux capabilities ...
The error message would scroll off the terminal window, and now I need to use the scroll bar to see what I screwed up.
Why did it show me the usage?
I know the usage, and if I want the usage I will type
docker run --help.
Well, a patch I submitted a while ago just got merged to fix both issues. Now
docker error messages will go to
stderr, and usage messages will go to
Committing an error in the command line will now put out a message like the following:
docker run --itq rhel7 /bin/sh flag provided but not defined: -itq Try 'docker run --help' for more information.
This new behavior should be in docker-1.4.1. Enjoy!
As Eric S. Raymond said, every good work of software starts by scratching a developer’s personal itch.