美文网首页
docker的CMD和ENTRYPOINT指令区别

docker的CMD和ENTRYPOINT指令区别

作者: 小明今晚加班 | 来源:发表于2019-08-26 22:16 被阅读0次

    首先,CMD和ENTRYPOINT都可指定运行容器要执行的命令,但是Dockerfile中的CMD指令会被 docker run后的参数覆盖掉。
    比如,很多image的Dockerfile中在最后都会有(比如tomcat)

    ...
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    

    正常情况下,我们要运行这个image,只需要执行

    docker run ImageName:tag 
    

    但是,如果我们想运行这个image后,进入容器,并列出容器根目录的文件/夹情况呢?我们可能会执行

    docker run -it ImageName:tag ls -l
    

    然后发现,容器并没有启动!原因就在于ls -l 命令覆盖掉了CMD["catalina.sh","run"].

    然而,ENTRYPOINT命令则不会,它既能启动容器,还能执行ls -l命令。

    相关文章

      网友评论

          本文标题:docker的CMD和ENTRYPOINT指令区别

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