美文网首页
Docker学习之:RUN vs CMD vs ENTRYPOI

Docker学习之:RUN vs CMD vs ENTRYPOI

作者: __apple | 来源:发表于2018-05-23 15:13 被阅读0次

上一节 给大家介绍了Dockerfile的使用,但是我们遗留了几个没讲,比如下面这三个:

  • RUN: 执行命令并创建新的Image Layer
  • CMD: 设置容器启动后默认执行的命令和参数
  • ENTRYPOINT: 设置容器启动时运行的命令
    RUN是比较好理解的,我们在前几节,在用Dockerfile生成Image的时候,用到了它,就是运行一些命令,其实CMD与ENTRYPOINT也是运行命令,那么它们有什么区别呢?那么现在我们就着重讲一下,它们的区别!!!!
    我们现在来看 Dockerfile文件
  • Dockerfile1
    FROM centos
    ENV name Docker
    ENTRYPOINT echo "hello $name"
  • Dockerfile2
    FROM centos
    ENV name Docker
    ENTRYPOINT ["/bin/echo", "hello $name"]
    我们先定义一个BaseImage centos,接着定义一个常量name Docker,小伙伴们可以建两个Dockerfile,测试一把,运行下面的命令
docker build -t apple/centos-entrypoint-exec .
docker run apple/centos-entrypoint-exec

结果都是一样一样的hello Docker
那么我们来看CMD是什么意思呢?

  • 容器启动时默认执行的命令
  • 如果docker run 指定了其他的命令,CMD命令被忽略
  • 如果定义了多个CMD,只有最后一个执行
    1,小伙伴们可以把上面的ENTRYPOINT换成CMD,其实也是可以的
    2,如果我们执行Docker run -it [image] /bin/bash 这个时候就不会执行CMD命令了
    那么ENTRYPOINT呢?
  • 让容器以应用程序或者服务的形式运行
  • 不会被忽略, 一定会执行
  • 最佳实践: 写一个shell脚本作为entrypoint
    怎么样小伙伴们学会了嘛?我这里只是给大家简单的介绍一下,如果想深入的了解,请抓紧Google!!!!

相关文章

网友评论

      本文标题:Docker学习之:RUN vs CMD vs ENTRYPOI

      本文链接:https://www.haomeiwen.com/subject/pagtdftx.html