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 的参数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2020-08-04 scrapy 的response 的相关属性