Docker中CMD和ENTRYPOINT的区别

news2024/11/23 15:35:08

目录

  • 一.CMD
  • 二.ENTRYPOINT
  • 三.总结

一.CMD

  1. CMD指令为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。
  2. CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
  3. 类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:CMD 在docker run 时运行,RUN 是在 docker build时运行。

注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
用法

The CMD instruction has three forms:
# 用法
CMD ["executable","param1","param2"] (exec form, this is the preferred form)

CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

CMD command param1 param2 (shell form)
  • 用法1
    带有括号的形式,这时,命令没有在任何shell终端环境下,如果我们要执行shell,必须把shell加入到括号的参数中。
FROM centos:7

CMD ["/bin/bash","-c","echo 'this is a test!'"]

采用中括号的形式,那么第一个参数必须是命令的全路径才行;而且一个dockerfile最多只能有一个cmd,如果有多个,只有最后一个生效
在这里插入图片描述

以上是默认的cmd,如果我们在run的时候指定了命令或者有ENTRYPOINT,那么cmd就会被覆盖
在这里插入图片描述

  • 用法2
    作为 ENTRYPOINT的参数
  • 用法3
    shell form,即没有中括号的形式。那么命令command默认是在“/bin/sh -c”下执行的
FROM centos:7

CMD echo "hello world !"

在这里插入图片描述

二.ENTRYPOINT

  1. 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
  2. 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。
  3. 在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。

注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
用法

ENTRYPOINT has two forms:
 # 用法
ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)

ENTRYPOINT command param1 param2 (shell form)

用法1命令行模式,也就是带中括号的和cmd的中括号形式是一致的,但是这里貌似是在shell的环境下执行的,与cmd有区别。如果run命令后面有东西,那么后面的全部都会作为entrypoint的参数。如果run后面没有额外的东西,但是cmd有,那么cmd的全部内容会作为entrypoint的参数,这同时是cmd的第二种用法。

  • 用法1
    run后面不带参数
FROM centos:7

CMD ["this is a test !"]

ENTRYPOINT ["echo"]

在这里插入图片描述
run后面带参数
在这里插入图片描述

  • 用法2
    是shell模式的。在这种模式下,任何run和cmd的参数都无法被传入到entrypoint里。
FROM centos:7

CMD ["this is a test !"]

ENTRYPOINT echo                  

在这里插入图片描述

三.总结

CMD设置的指令在镜像运行时自动运行,无法追加指令,只能把指令全部覆盖

ENTRYPOINT设置的指令在镜像运行时与CMD一样,可以在新建镜像时设置的指令后追加新的指令,也可以使用 --entrypoint 覆盖指令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/825190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java:JDK8之后新的时间(推荐使用) LocalDate、LocalTime、LocalDataTime 的相关API

更新后的时间分类 LocalDate 的相关API //0、获取本地日期对象 LocalDate ld LocalDate.now();//年月日 system.out.println(ld) ;//1、获取日期对象中的信息 int year ld.getYear();//年 int month ld.getMonthValue(); //月(1-12) int day ld.getDayOfMonth();//日 int d…

不用下软件,三维模型就可以实现在线浏览了!

对三维有一些了解的朋友都知道,目前很多三维模型网站基本都是以2D形式展示的,用户只能通过截取不同角度的视图来查看模型。如果用户想要实现模型动态预览,只能下载其模型文件,并在对应的三维软件中打开。现在,不需要下…

springBoot多数据源使用tdengine(3.0.7.1)+MySQL+mybatisPlus+druid连接池

一、安装部署 1、我这里使用的 3.0.7.1版本,因为我看3.x版本已经发布了一年了,增加了很多新的功能,而且3.x官方推荐,对于2.x的版本,官网都已经推荐进行升级到3.x,所以考虑到项目以后的发展,决定…

EMC VxRail E560 vusb0端口不断down和up问题

客户的一台VxRail E560报vusb0网卡故障,如下所示: 该端口是VxRail ESXi与iDRAC内部通信的网口,并没有连接外部网络。 在vobd.log日志中,可以看到vusb0不断在down和up的信息: 由于节点在2023年4月份进行了重装&am…

每日一题8.2 2536

2536. 子矩阵元素加 1 给你一个正整数 n ,表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat ,矩阵中填满了 0 。 另给你一个二维整数数组 query 。针对每个查询 query[i] [row1i, col1i, row2i, col2i] ,请你执行下述操作:…

超出背包限制--潜水员

本题和之前的二维背包差不多&#xff0c;但是它可以做到超出体积的限制&#xff0c;本质上我们的状态转移方程其实和之前的差不多&#xff0c;f[i][j]min(f[i-1][j],f[i-1][j-v]w),超出的体积应该如何去计算&#xff0c;我们可以利用负数去计算&#xff0c;也就是i-v1<0||j-…

如何在烟草行业运用IPD?

从当前的世界烟草行业来看&#xff0c;烟草经济的发展十分迅速&#xff0c;中国是烟草生产与消费第一大国&#xff0c;每年由我国生产与出售的烟草远销世界各地。与此同时&#xff0c;中国烟草行业的集中度越来越高&#xff0c;企业的数量与规模稳步上升&#xff0c;行业迈向规…

Flink - sink算子

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 1. Kafka_Sink 2. Kafka_Sink - 自定义序列化器 3. Redis_Sink_String 4. Redis_Sink_list 5. Redis_Sink_set 6. Redis_Sink_hash 7. 有界流数据写入到ES 8. 无界流数据写入到ES 9. 自定…

nodejs环境部署

1.前言 前端的打包必须要使用nodejs环境 2.部署 下载安装包&#xff0c;在下面的路径中找到适合自己项目合适的版本在下载&#xff0c;可以问一下前端开发人员 路径&#xff1a;Index of /dist/ 我这里是下载了14.21.3版本的nodejs环境,上传到需要部署的主机中 mkdir /opt…

制砖机系统比例控制阀放大器

制砖机系统是一种生产砖块的机器设备系统。该系统由多个部分组成&#xff0c;包括压力系统、模具和振动系统、烘干和烧制系统等。压力系统是制砖机的主要组成部分之一&#xff0c;它通过压力将原料压缩成一定形状和尺寸的块状&#xff0c;然后经过烘干和烧制等步骤&#xff0c;…

【嵌入式系统开发实训】学生实验报告

一、实验内容 1、过程考核60分&#xff1a; &#xff08;1&#xff09;顺序点亮3个LED灯&#xff08;分数&#xff1a;10分&#xff09;&#xff1b; &#xff08;2&#xff09;按键顺序点亮3个LED灯&#xff08;分数&#xff1a;10分&#xff09;&#xff1b; &#xff08;3&a…

恒运资本:炒股知识有用吗?

炒股是指通过购买和出售股票来赚取差价的一种出资行为。在现代社会&#xff0c;炒股已经成为许多人重视的话题。然而&#xff0c;有些人以为炒股常识是非常有用的&#xff0c;而另一些人则以为炒股常识并不有用。那么&#xff0c;炒股常识终究有多大的用途呢&#xff1f;本文将…

【NLP概念源和流】 06-编码器-解码器模型(6/20 部分)

一、说明 在机器翻译等任务中,我们必须从一系列输入词映射到一系列输出词。读者必须注意,这与“序列标记”不同,在“序列标记”中,该任务是将序列中的每个单词映射到预定义的类,如词性或命名实体任务。 作者生成 在上面的

实现本地上传、FTP上传、阿里云OSS上传三者合一处理

1、选项模式【Options】的处理 文件上传处理应该由程序进行配置&#xff0c;决定使用那种方式&#xff0c;那么这里面我们为了弹性化处理&#xff0c; 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传的配置参数信息。 微软引入选项模式,它是用于配置框架…

宇凡微2.4g遥控船开发方案,采用合封芯片

2.4GHz遥控船的开发方案是一个有趣且具有挑战性的项目。这样的遥控船可以通过无线2.4GHz频率进行远程控制&#xff0c;让用户在池塘或湖泊上畅游。以下是一个简要的2.4GHz遥控船开发方案&#xff1a; 基本构想如下 mcu驱动两个小电机&#xff0c;小电机上安装两个螺旋桨&#…

三、JVM-如何判断对象已死问题

内存模型以及如何判定对象已死问题 体验与验证 2.4.5.1 使用visualvm visualgc插件下载链接 &#xff1a;https://visualvm.github.io/pluginscenters.html 选择对应JDK版本链接—>Tools—>Visual GC 若上述链接找不到合适的&#xff0c;大家也可以自己在网上下载对应…

聊聊虚拟定位工具新宠儿:AnyGo的原理与识别

市面上已经有很多基于位置服务的应用场景&#xff0c;如运动品类应用基于地理位置生成运动轨迹&#xff0c;企业办公应用基于定位信息进行打卡&#xff0c;游戏品类应用基于位置信息开发区域排名&#xff0c;电商品类应用基于位置发放区域性优惠券等等。在黑灰产嗅探到背后的商…

自然语言处理学习笔记(二)————语料库与开源工具

目录 1.语料库 2.语料库建设 &#xff08;1&#xff09;规范制定 &#xff08;2&#xff09;人员培训 &#xff08;3&#xff09;人工标注 3.中文处理中的常见语料库 &#xff08;1&#xff09;中文分词语料库 &#xff08;2&#xff09;词性标注语料库 &#xff08;3…

Elasticsearch:语义搜索 - Semantic Search in python

当 OpenAI 于 2022 年 11 月发布 ChatGPT 时&#xff0c;引发了人们对人工智能和机器学习的新一波兴趣。 尽管必要的技术创新已经出现了近十年&#xff0c;而且基本原理的历史甚至更早&#xff0c;但这种巨大的转变引发了各种发展的“寒武纪大爆炸”&#xff0c;特别是在大型语…

电容笔和触控笔的区别是什么?好用的苹果平替电容笔

如今&#xff0c;随着无纸化学习以及办公的发展&#xff0c;电容笔更是倍受关注。但是&#xff0c;很多人都对于电容笔和触控笔之间的区别都存在着疑惑。其实&#xff0c;这两种产品很好区分&#xff0c;第一种是电容笔&#xff0c;它是适用于我们最常用的电容屏&#xff0c;例…