Dockerfile 中 run 、cmd、entrypoint 的区别

refer to https://www.cnblogs.com/CloudMan6/p/6875834.html

entrypoint 指令后面的启动脚本中也必须有一个持续运行的进程,否则 执行 docker run 的时候会自动退出。

entrypoint 和 cmd 区别

区别一:

使用 entrypoint 之后, 再 docker run 镜像的时候,可以接 entrypoint 里面设置的命令 参数。
而使用 cmd 之后,docker run 就基本覆盖了cmd 里面的设置的命令。

区别二:

Dockerfile 如果最后使用的是 entrypoint,构建完成后使用 docker run 后面如果再接命令,会报错 多余的参数。
如果使用的CMD,构建完成后就会被覆盖掉。
所以使用entrypoint之后,再docker run 时后台运行即可,再用 exec 进入容器

总结:

两个区别主要是在应用的时候展现出来的。所以可以根据应用场景来判断使用哪个指令。
如果 启动的是一个包含大量命令的脚本,如 start.sh 的话,这里可以使用 start.sh,保证run的时候不被覆盖。
如果 希望启动的容器只包含一条 持续运行的命令的话,就可以使用 CMD 。如 sshd 服务,这样 docker run 的时候可以选择覆盖或者不覆盖。

如果一起使用,cmd 中的指令就会变成 entrypoint 的参数。

posted @   风风羊  阅读(806)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2020-08-04 scrapy 的response 的相关属性
点击右上角即可分享
微信分享提示