Dockerfile 中的 CMD 和 ENTRYPOINT 有什么区别? - vip共享吧
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们


导航菜单
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们
秒懂百科

Dockerfile 中的 CMD 和 ENTRYPOINT 有什么区别?

2024/9/5 韩俊  共享网络资源 562 0

我们可以通过在Dockerfile中指定指令来构建Docker镜像。Dockerfile允许我们指定分步说明,这些说明定义了创建容器环境的规则。Docker容器是为在其中运行的特定任务和进程而创建的。在Dockerfile中使用了三个重要的指令,让我们定义哪些进程需要在容器内运行,以及以什么顺序和顺序运行。

这3条指令是-

  • RUN

  • CMD

  • ENTRYPOIN

  • RUN指令非常简单。我们可以定义简单的子命令以及要在容器内执行的RUN指令。例如,如果我们想安装一个pip包,我们可以简单地使用Dockerfile中的“RUNpipinstallpackage_name”指令。

    然而,另外两个指令-CMD和ENTRYPOINT可能会很混乱,尤其是对于初学者。在本文中,我们将讨论用例和这两个命令之间的区别以及一些有用的示例。但是在我们进入它们之前,我们需要了解在Dockerfile中编写指令的shell和exec形式

    Shell形式

    当我们使用shell形式指定指令时,正常的shell处理发生在后台。守护进程在执行shell形式的命令时在后台调用命令shell。以shell形式指定命令的格式是-

    $ <instruction> <command>

    可执行表格

    当我们以可执行形式编写命令并执行这些命令时,正常的shell处理不会在后台发生。相反,可执行文件被直接调用。以可执行形式指定命令的格式是-

    $ <instruction> ["executable", "parameter", "parameter", . . . .]

    命令的shell形式一般用于RUN指令,可执行形式一般用于CMD和ENTRYPOINT指令。

    CMD指令

    您可以使用CMD指令设置带参数的默认命令。如果你运行一个Docker容器而不指定任何额外的CLI命令,CMD指令将被执行。您可以包含一个可执行文件作为默认命令。但是,如果您选择省略它,则必须与CMD指令一起指定ENTRYPOINT指令

    如果您在Docker运行命令中指定了一个参数,则使用CMD指令指定的默认参数将被忽略。此外,如果您在单个dockerfile中指定了多个CMD指令,则只会执行最后一个指定的指令。

    CMD指令有三种形式——

  • CMD["only_executable","parameter_1","parameter_1"](可执行形式)

  • CMD["parameter_1","parameter_2"](用于为ENTRYPOINT指令提供默认参数)

  • CMD命令param1param2(是shell形式)

  • 例子-

    $ CMD echo "Command in Shell Form"
    $ CMD ["/bin/bash", "-c", "echo Command in Exec Form"]

    ENTRYPOINT指令

    ENTRYPOINT指令看起来几乎与CMD指令相似。但是,它们之间的主要突出区别在于它不会忽略您在Docker运行命令中指定的任何参数(CLI参数)。

    当我们在可执行形式中指定了ENTRYPOINT指令时,它允许我们使用Dockerfile中的CMD指令设置或定义一些额外的参数/参数。如果我们以shell形式使用它,它将忽略任何CMD参数甚至任何CLI参数。

    ENTRYPOINT指令的形式是-

  • ENTRYPOINT["only_executable","parameter_1","parameter_2"](可执行形式)

  • ENTRYPOINT命令参数_1参数_2(外壳形式)

  • 例子-

    $ ENTRYPOINT echo "Welcome to nhooo"
    $ ENTRYPOINT ["/bin/bash", "-c", "echo Welcome to nhooo"]

    最后的想法!

    综上所述,如果你想指定默认命令和启动Docker容器时需要运行的参数,你可以使用CMD指令。如果您与Docker运行命令一起指定参数,则使用CMD指令指定的参数将被忽略。这意味着使用Dockerrun命令的CLI参数将覆盖使用CMD指令指定的参数。

    另一方面,ENTRYPOINT指令有两种情况。如果您在shell形式中使用ENTRYPOINT指令并使用CLI参数或什至通过CMD命令提供附加参数,则ENTRYPOINT指令将覆盖所有这些。但是,如果以可执行形式使用ENTRYPOINT指令,则可以使用CMD指令设置附加参数。

    根据您的要求和用例,您可以采用这些命令中的任何一个。

    点赞:0 分享

    上一篇
    什么是科威特投资局,它是做什么的?
    下一篇
    Dockerfile 中的“COPY”和“ADD”命令有什么区别?
    作者头像 作者名称 作者性别
    韩俊

    热门推荐

    1 实干的经典句子
    2 送朋友简短祝福语大全
    3 长征雪山经典句子
    4 冬月祝福语简短句子
    5 司机退休送祝福语简短
    6 毕业照花束祝福语简短

    评论列表

    取消回复

    •  
      Login

      韩俊

      趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。

      退出登陆
      • 10076文章
      • 455评论
      • 80微语
  • 广告赞助

  • 二零二五年06月
    一二三四五六日
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
  • 分类

    • 网站模板源码
    • IT技术笔记
    • 好资源分享
    • 共享网络资源
  • 最新文章

      • 幼儿端午祝福语简短句
        • 端午简短祝福语送家人
          • 端午文案祝福语简短励志
            • 经典的黄句子
              • 经典黄色搞笑句子
                • 迷雾通:免费使用的VPN软件
                  • 任推邦:打造你的赚钱新途径!
                    • 任推邦是正规平台吗?任推邦邀请码多少?
  • 热门文章

    • 酷狗音乐VIP账号 酷狗音乐会员账号共享2017.01.29更新
    • 芒果tv vip会员账号 芒果tv会员账号共享2017.01.29更新
    • 爱奇艺vip账号 爱奇艺/PPS会员账号共享2016.12.12更新
    • 优酷/土豆vip会员账号 优酷会员账号共享2017.01.29更新
    • 活动:免费获得爱奇艺VIP/PPS会员账号50天以上的使用权!
    • 酷我音乐VIP账号 酷我音乐会员账号共享2016.12.31更新
    • 暴风影音会员账号 暴风影音会员账号共享2016.12.31更新
    • m1905会员账号 m1905会员账号共享2016.10.21更新
  • 最新评论

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/10.jpg

      你丫的 文章写得太好了 支持下!![F3...

    • https://www.vipshare8.com/content/templates/meta/Static/images/avatar.jpg

      很棒!刚在某网站看到这个,很欣赏,可惜下...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3861064027

      呃呃呃 oooo

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了111:根据激活的时间有一年的有效期!

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=792480561

      到2025就到期了吗?

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      [blockquote]打卡时间:16:...

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/7.jpg

      俊哥,想借用迅雷一用!但需要手机验证!看...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3293901900

      感谢大大的分享

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了好奥v:如果没有解析成功,可以切换接口...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=131241242441

      现在视频解析网站怎么用不了啦?

  • 网站统计 I 当前在线:328人

    • 本站管理:1位
    • 用户总数:591位
    • 置顶文章:2篇
    • 日志总数:10076篇
    • 微语总数:80条
    • 评论总数:455条
    • 标签总数:83条
    • 页面总数:8页
    • 分类总数:14个
    • 链接总数:16条
    • 运行天数:3699天
    • 最后更新:5月26日
    • 登录
    • 注册
    • 找回
    Copyright © 2025vip共享吧网站地图 网站备案豫ICP备19004194号-1

    免责声明:本站资源仅供用于学习和交流,本站部分素材内容来源于网络,如有侵权/投稿等,请及时联系站长.

    • 首页
    • 秒懂百科 秒懂百科
    • 搜索
    • 史上今日

    大家都在搜

    • MySql
    • 电影抢先看
    • 微信小程序源码
    • 经验分享
    • PHP教程
    • 芒果tv会员
    • meilisearch
    • 网盘赚钱
    • 网赚
    • seo优化
    • 聊天app
    • PHP
    • 土豆vip账号
    • qq音乐会员共享
    • 华数tv会员账号分享
    • 威客平台
    • 
    • 