Dockerfile中CMD与ENTRYPOINT命令的区别
2023-03-20 14:53:27 时间
CMD与ENTRYPOINT区别
- CMD命令设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换
- ENTRYPOINT配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令)
- ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD命令或者命令行参数提供额外的参数
- ENTRYPOINT 中的参数始终会被使用,这是与CMD命令不同的一点
1. Shell格式和Exec格式命令
Shell格式:指令 <command>
CMD java -jar test.jar
Exec格式:指令 ["executable", "param1", "param2", ...]
ENTRYPOINT ["java", "-jar", "test.jar"]
2. Shell格式和Exec格式命令的区别
- Shell格式中的命令会直接被Shell解析
- Exec格式不会直接解析,需要加参数
3. CMD和ENTRYPOINT指令支持的命令格式
CMD 指令的命令支持以下三种格式:
- Exec格式: CMD ["executable","param1","param2"]
- Exec参数: CMD ["param1","param2"] 用来为ENTRYPOINT 提供参数
- Shell格式: CMD command param1 param2
ENTRYPOINT 指令的命令支持以下了两种格式:
- Exec格式:可用使用CMD的参数和可使用
docker run [image] 参数
后面追加的参数 - Shell格式 :不会使用 CMD参数,可使用
docker run [image] 参数
后面追加的参数
4. 示例
ENTRYPOINT的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test
ENTRYPOINT的Exec格式
+ CMD的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["Word"]
# 启动容器的命令: docker run -it [image]
# 输出: Hello Word
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test
ENTRYPOINT的Exec格式
+ CMD的shell格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD Word
# 启动容器的命令: docker run -it [image]
# 输出: Hello /bin/sh -c Word
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test
ENTRYPOINT的shell格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello
ENTRYPOINT的shell格式
+ CMD的Shell格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD Word
# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello
ENTRYPOINT的shell格式
+CMD的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD ["Word"]
# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello
参考链接
https://blog.csdn.net/weixin_42971363/article/details/91506844
原文出处:https://gitbook.curiouser.top/origin/docker-Dockerfile%E4%B8%ADCMD%E4%B8%8EENTRYPOINT%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8C%BA%E5%88%AB.html
相关文章
- 固定资产管理软件是如何为企业降本增效的?
- 使用带实例的Gltf导入UE4的可行性
- 19个常用的5V转3.3V技巧
- 小器件如何助力大国重器:本土功率半导体分立器件产业解析
- 条码软件如何制作扇形文字
- kubernetes集群升级时更换基础镜像地址
- Kong网关 入门、实战与进阶
- Spring OAuth2 授权服务器配置详解
- OAuth2.0中的scope和RBAC中的role有什么关系
- JSON序列化和反序列化还有这种玩法
- 性能优化 | Go Ballast 让内存控制更加丝滑
- 再见 Swagger UI!国人开源了一款超好用的 API 文档生成框架,Star 4.7K+,真香!!
- 百万路由器存攻击风险、朝鲜支持的黑客正入侵美英|11月19日全球网络安全热点
- 动态模型之动态增减【FunTester测试框架】
- LevelDB Java&Go实践
- Selenium修改HTTP请求头三种方式
- austin 番外篇 #01
- 【刷题计划】三数之和
- 工程部署(一)移动端算子选择
- 如果没有 IDE,该如何 Debug?