DEV Community

Jace
Jace

Posted on • Edited on

Cmd and Entrypoint in Docker container.

For a long time, I can not tell the exact difference between CMD and ENTRYPOINT in Dockerfile.
Until I have a chance to take a look for the definition.

I will explain this base on few different scenarios.


Let's say If I have a Ubuntu image-based container named ubuntu-sleeper to execute the sleep for 5 seconds. And the Dockerfile showed as below.

FROM ubuntu

CMD sleep 5
Enter fullscreen mode Exit fullscreen mode

When I type docker run ubuntu-sleeper, container will automatically execute the sleep 5 to sleep 5 seconds.

But what if I like to customize the second to sleep?

As we know, we can overwrite the default CMD by appending the command after the docker run.
For example, docker run ubuntu-sleeper sleep 10

But it looks bad, and we like make it look like this.
docker run ubuntu-sleeper 10
Which only pass the second argument we need.

To achieve this, we can use ENTRYPOINT, to write our dockerfile..

FROM ubuntu

ENTRYPOINT ["sleep"]
Enter fullscreen mode Exit fullscreen mode

Docker will execute the command in ENTRYPOINT first, then the CMD.
So, when we type docker run ubuntu-sleeper 10.
Docker will get the ENTRYPOINT sleep and the 10 we passed via run commmad.

But what if I run this container without passing the CMD?
For example, just run docker run ubuntu-sleeper.
As we know, this will make container only run sleep without given argument. And you will get the error says the operand is missing.

So how do you define the default value for this container?
In this case, You can define ENTRYPOINT and CMD at a same time.

FROM ubuntu

ENTRYPOINT ["sleep"]
CMD ["5"]
Enter fullscreen mode Exit fullscreen mode

So when you simply run docker run ubuntu-sleeper, the container will sleep 5 seconds by default.
And you can change CMD value by docker run ubutnu-sleeper 20

PS: And you can even change the ENTRYPOINT with --entrypoint option in docker run.

docker run --entrypoint sleep2.0 ubuntu-sleeper 10
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
tchi91 profile image
Fethi TChi

Nice article, thanks a lot 👌