Sustie

主页 所有文章 文章检索

Dockerfile中CMD和ENTRYPOINT的区别

在 Dockerfile 中有两个命令CMDENTRYPOINT,它们都可以用来指定 Docker 镜像启动时的默认命令,那么它们究竟有什么区别呢?

我在网上看到一篇博客文章很好地解释了两者的区别。简而言之,最终运行docker run命令的时候,容器执行的命令会是 ENTRYPOINT + CMD,但是有以下几点需要注意:

  1. 如果 ENTRYPOINT 是字符串形式而非数组形式,那么 CMD 会被忽略
  2. Dockerfile 中指定的 ENTRYPOINT 和 CMD 都可以在执行docker run命令的时候被修改。命令格式为:docker run --entrypoint <ENTRYPOINT> <image> <CMD>

我引用的博客文章的作者推荐使用 ENTRYPOINT,但我习惯只使用 CMD,而不设置 ENTRYPOINT,原因是这样比较简单,也不容易出错。