Docker CMD vs ENTRYPOINT

它们都用来标识image的可执行文件

很多image将自己的CMD设置为/bin/sh 或者 /bin/bash,因此在运行image时就会进入shell的交互界面(当然docker run时需要加上-it)

在docker run时,只需要在命令后直接添加命令,就可以覆写CMD的默认命令

但是如果使用ENTRYPOINT,则需要用 --entrypoint 覆写命令

格式

shell形式:
CMD command param1 param2

将在shell环境中运行,可以使用环境变量。但command的pid不会是1,因为pid为1的进程是shell,因此Ctrl + C 不会有反应。

exec形式:
CMD ["command", "param1", "param2"]

直接运行命令,command的pid会为1。如果希望用到环境变量,则可以执行
CMD ["sh", "-c", "command", "param1", ...]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容