The interaction of CMD and ENTRYPOINT
The CMD and ENTRYPOINT instructions in a Dockerfile interact with each other in an interesting way.
Consider this simple dockerfile:
from alpine:latest
cmd echo A
When I run docker run -it $(docker build -q .) The out put I get is A, like you'd expect.
With an additional entrypoint instruction:
from alpine:latest
entrypoint echo B
cmd echo A
I get just B no A.
Each of these commands are using the shell form of the instruction. What if I use the exec form?
from alpine:latest
entrypoint ["echo", "B"]
cmd ["echo", "A"]
Then!  Surprisingly, I get B echo A.
When using the exec form cmd provides default arguments to entrypoint
You can override those default arguments by providing an argument to docker run:
docker run -it $(docker build -q .) C
B C
        
          Tweet