Passing an argument to the interactive docker container upon its launch

Using an ENTRYPOINT Docker command specified within a Dockerfile one can pass an arguments to an interactive Docker container upon its launch. Consider a following Dockerfile content:

FROM debian:8
ENTRYPOINT ["echo"]

Now, let’s build a sample foobar container:

# docker build -t="foobar" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM debian:8
 ---> 41b730702607
Step 1 : ENTRYPOINT echo
 ---> Running in 0ffdc9f73e8a
 ---> a9aad02a62e1
Removing intermediate container 0ffdc9f73e8a
Successfully built a9aad02a62e1

Next, we launch our new foobar container using interactive mode and supply an argument MY ARGUMENT:

# docker run -t -i foobar MY ARGUMENT
MY ARGUMENT


Alternatively, we can use CMD command to supply a default argument if no user defined argument has been supplied during containers launch. Let’s change our Dockerfile to include CMD command:

FROM debian:8

ENTRYPOINT ["echo"]
CMD ["DEFAULT ARGUMENT"]

Rebuild Docker image:

# docker build -t="foobar" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM debian:8
 ---> 41b730702607
Step 1 : ENTRYPOINT echo
 ---> Using cache
 ---> a9aad02a62e1
Step 2 : CMD DEFAULT ARGUMENT
 ---> Running in 42b7040b336f
 ---> ca6c2cddf0ea
Removing intermediate container 42b7040b336f
Successfully built ca6c2cddf0ea

When no argument is supplied a default argument defined by CMD command will be triggered:

# docker run -t -i foobar
DEFAULT ARGUMENT