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