当前位置 : 主页 > 编程语言 > 其它开发 >

Dockerfile 中 CMD 和ENTRYPOINT 的区别

来源:互联网 收集:自由互联 发布时间:2022-06-09
1-联系 允许用户指定容器的默认执行的命令 2-区别 CMD有3种格式,Exec 格式是 CMD 的推荐格式 Exec 格式:CMD ["executable","param1","param2"]CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时
1-联系
  • 允许用户指定容器的默认执行的命令
2-区别
  • CMD有3种格式,Exec 格式是 CMD 的推荐格式

    Exec 格式:CMD ["executable","param1","param2"]
    CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式。
    Shell 格式:CMD command param1 param2
    
  • ENTRYPOINT 有两种格式

    Exec 格式:ENTRYPOINT ["executable", "param1", "param2"] 这是 ENTRYPOINT 的推荐格式
    Shell 格式:ENTRYPOINT command param1 param2
    
    ## Exec 格式
    
    ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。
    
    ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。
    
    比如下面的 Dockerfile 片段:
    
    ENTRYPOINT ["/bin/echo", "Hello"]  
    CMD ["world"]
    
    当容器通过 docker run -it [image] 启动时,输出为:
    Hello world
    
    而如果通过 docker run -it [image] CloudMan 启动,则输出为:
    Hello CloudMan
    
    ## Shell 格式
    
    ENTRYPOINT 的 Shell 格式会忽略任何 CMD 或 docker run 提供的参数。
    
  • 如果 docker run 指定了其他命令,CMD 指定的默认命令将被忽略。

  • 如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。

  • ENTRYPOINT 看上去与 CMD 很像,它们都可以指定要执行的命令及其参数。不同的地方在于 ENTRYPOINT 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。

【本文来源:香港将军澳机房 http://www.558idc.com/hk.html 欢迎留下您的宝贵建议】
上一篇:Python 引用其他路径下的module
下一篇:没有了
网友评论