文章目录
- 一. dockerfile>dockerfile中的ENTRYPOINT和CMD有什么区别?
- 1. `CMD` 指令
- 2. `ENTRYPOINT` 指令
- 3. `ENTRYPOINT` 和 `CMD` 的组合使用
- 4. 示例
- 示例 1:只有 `CMD`
- 示例 2:只有 `ENTRYPOINT`
- 示例 3:`ENTRYPOINT` 和 `CMD` 组合使用
- 5. 覆盖行为
- 6. 最佳实践
- 总结
- 二. 参考文献
dockerfile>dockerfileENTRYPOINTCMD_6">一. dockerfile>dockerfile中的ENTRYPOINT和CMD有什么区别?
在 Dockerfile 中,ENTRYPOINT
和 CMD
都用于指定容器启动时要执行的命令,但它们的用途和行为有所不同。理解两者的区别对于正确配置容器的启动行为非常重要。
1. CMD
指令
- 用途:指定容器启动时默认执行的命令。
- 覆盖:如果在
docker run
命令中提供了其他命令行参数,CMD
指定的命令会被覆盖。 - 形式:可以使用三种形式:
CMD ["executable", "param1", "param2"]
:exec 形式,推荐使用。CMD ["param1", "param2"]
:参数形式,需要结合 ENTRYPOINT
一起使用。CMD command param1 param2
:Shell 形式,不推荐,因为在某些情况下会有意想不到的行为。