zoukankan      html  css  js  c++  java
  • Dockerfile中ENTRYPOINT 和 CMD的区别

    一、dockerfile中的 CMD

       1、每个dockerfile中只能有一个CMD如果有多个那么只执行最后一个。

       2、CMD 相当于启动docker时候后面添加的参数看,举个简单例子:

          docker run -itd --name 名字 镜像名称  /bin/bash -c

          a、镜像名称后面跟了一个/bin/bash -c ,其实等价于在dockerfile中的CMD ["/bin/bash","-c"]

         b、如果dockerfile中的CMD中有了CMD["/bin/bash","-c"],那么就不用在执行的时候再添加了,如果添加了参数的话那么就相当于要执行你添加的参数,默认的CMD中的参数就无效了。

    二、dockerfile中的ENTRYPOINT

       1、一个dockerfile中ENTRYPOINT也只能存在一个,若存在多个那么只执行最后一个,你可以理解为开机启动的意思,和CMD有点像,不过还是有区别。

       2、举个例子:

       a、dockerfile中有ENTRYPOINT ["tail","-f","/usr/local/aaa"],当启动的时候镜像就执行了里面的内容,如果你像上面带参数的话就相当于在这个执行的内容后面再加入参数

       b、再来举个例子:

       如果我们的dockerfile中有a中的这句话然后我们启动我们的docker:

       docker run -itd --name 名字  镜像名称  /bin/bash -c

       此时就相当于我们启动docker的时候执行了:tail -f /usr/local/aaa /bin/bash -c

    三、CMD和ENTRYPOINT结合

       1、综上写一个正常的CMD与ENTRYPOINT的组合命令

       2、dockerfile 内容如下:     

        FROM daocloud.io/centos:latest

        ADD aaa /usr/local/aaa

        CMD ["-f","/usr/local/aaa"]
        ENTRYPOINT ["tail"]

        制作镜像命令:docker build -t my/helloworld

        启动命令:docker run -itd --name xiaowangba  my/helloworld

       3、上面命令启动后就相当于开机执行了tail -f /usr/local/aaa命令

  • 相关阅读:
    正则表达式的三种模式【贪婪、勉强、侵占】的分析
    php实用的文件上传类
    php简单实用的验证码生成类
    phpstorm不安装apache就可以本地测试PHP
    Ajax技术——带进度条的文件上传
    Mybatis 多表查询及查询结果映射
    关于textarea包在div的自适应问题
    Luogu P3200 [HNOI2009]有趣的数列
    群&置换群&burnside
    卡特兰树
  • 原文地址:https://www.cnblogs.com/chenpengzi/p/11358500.html
Copyright © 2011-2022 走看看