Can you also share a link or post your CWL source?
As a reminder, command lines are a series of strings. When you type echo Hello world at the command line prompt, that is broken up into three pieces where there are spaces: "echo", "hello", "world". The first piece is used to find the program to execute on the $PATH, in this example it is echo and the program found is /bin/echo. Then /bin/echo is given the entire list of pieces and then it is up to /bin/echo to parse the command line and do something with it. Sometimes we want to instruct our shell (like BASH) to send an argument that has a space in it, like filename or a git commit message. Then we have to work around the “break the command line on spaces” processing by using quote marks or escape \ the spaces. For example: git commit -m 'hello world' becomes "git", "commit", "-m", "hello world", none of the quotation marks (single or double) get sent to /usr/bin/git in this example.
Now lets look at the output from running your CWL description:
Note how this whole section is inside single quotes. So the shell (or in this case, the Docker engine) will try to look for a program named samtools mpileup -B -f /eFRfYZ/NormalizeFasta.fasta /var/lib/cwl/stg76b7cba7-a2c0-4738-85b4-5e7253da3b8e/covid057Sorted.bam -o ncov.mpileup instead of looking for a program named samtools and passing the rest of the options broken up at the spaces like normal.