• Docker 的CMD与ENTRYPOINT区别


    我们在构建一个docker镜像的时候,Dockerfile里面有两个命令会引起我们的注意,它们就是 CMD 和 ENTRYPOINT,看起来很相似,实际上并非如此。

    一、CMD

     顾名思义就是允许用户指定容器默认执行的命令。此命令会在docker run 没有指定其他命令的时候运行,换句话说,这个命令会被 docker run 指定的命令覆盖,即具有覆盖性,那么我们可以得出以下两个结论:

    1. 如果 docker run 指定了其他命令的话,那么CMD的命令将会被覆盖。
    2. 如果 Dockerfile 有多个CMD 指令,那么最终因为覆盖性,只会执行最后一条。

     CMD的三种格式

    1. Exec 格式:CMD["executable", "param1", "param2"]。
    2. 为 ENTRYPOINT 提供额外的参数:CMD["param1", "param2"],此时 ENTRYPOINT 必须使用 Exec 格式。
    3. Shell 格式:CMD command param1 param2,比如: CMD echo "hehehe",docker run 不带命令运行会直接输出: hehehe。

    二、ENTRYPOINT

      翻译过来是进入点,大概是可以由这个点进入容器内部的命令执行。

    准确的定义是:可以让容器以应用程序或者服务的形式进行。

     ENTRYPOINT的两种格式

    1. Exec 格式:ENTRYPOINT["executable", "param1", "param2"]
    2. Shell 格式:ENTRYPOINT command param1 param2,比如: CMD echo "hehehe",直接输出: hehehe。

    其中如果 CMD 与 ENTRYPOINT搭配使用的话,CMD 可以为 ENTRYPOINT 提供额外的参数。

    ENTRYPOINT ["/bin/echo", "nihao"]
    CMD ["laowang"]

    当容器通过 docker run -it <镜像名称> 启动的时候,输出:nihao laowang

    当容器通过 docker run -it <镜像名称> lisi 启动的时候,输出:nihao lisi

    PS.ENTRYPOINT  的 Shell 格式会忽略任何 CMD 或者 docker run 提供的参数。

  • 相关阅读:
    poj 1417 True Liars(并查集+背包dp)
    CodeForces 760 C. Pavel and barbecue(dfs+思维)
    poj 2912 Rochambeau(枚举+带权并查集)
    lightoj 1245 Harmonic Number (II)(简单数论)
    thinkphp __PUBLIC__的定义 __ROOT__等常量的定义
    HTML5 画布参考
    HTML5 DTD
    HTML5 音频视频
    HTML5 事件
    HTML5 标准属性 NEW:HTML 5 中新的标准属性。 注释:HTML 4.01 不再支持 accesskey 属性:
  • 原文地址:https://www.cnblogs.com/cxbhakim/p/8530469.html
Copyright © 2020-2023  润新知