3.4 RUN vs CMD vs Entrypoint

CMD

  • 设置容器启动后默认执行的命令和参数
  • 如果docker run 指定了其他命令,CMD命令可以被忽略
  • 如果定义了多个CMD,只有最后一个会执行

RUN

执行命令并创建新的Image Layer

ENTRYPOINT

  • 设置容器启动时运行的命令
  • 适合让容器以应用程序或者后台服务的形式来运行
  • 不会被忽略,一定会执行

使用shell风格

# 输出的结果为 Hello Docker
FROM centos
ENV name Docker
ENTRYPOINT echo "Hello $name"

使用exec风格

# 输出的结果为 Hello $name
FROM centos
ENV name Docker
ENTRYPOINT ["echo","Hello $name"]
# 输出的结果为 Hello Docker
FROM centos
ENV name Docker
ENTRYPOINT ["sh","-c","echo Hello $name"]

你可能感兴趣的:(3.4 RUN vs CMD vs Entrypoint)