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