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

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

2023/6/24 韩俊  共享网络资源 108 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 分享 海报 收藏

    上一篇
    为什么实际利率的收益率高于名义利率?
    下一篇
    响应时间测试是什么意思?
    作者头像 作者名称 作者性别
    韩俊
    联系作者 作者主页

    热门推荐

    1 什么是反向合并、正向合并和子公司合并?
    2 什么是 C# 中的密封类?
    3 小程序隐私保护指引完整填写范本
    4 什么是期权?
    5 契约型封闭式基金是什么意思?
    6 概算和预算的区别是什么?

    评论列表

    取消回复

    •  
      Login

      韩俊

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

      站长 主页
      用户中心
      评论管理
      退出登陆
      • 1236文章
      • 449评论
      • 79微语
  • 广告赞助

  • 二零二三年09月
    一二三四五六日
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
  • 分类

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

      • 小程序隐私保护指引完整填写范本
        • 微信小程序备案时遇到的一些问题
          • 迷雾通:免费科学上网的VPN软件
            • WordPress大前端主题DUX6.4版本免授权无限制版
              • 网站广告计价方式有哪些类型
                • 分析网站收录量减少的原因
                  • Nginx配置图片缓存加速,提高用户体验
                    • nginx负载均衡与正反向代理
  • 热门文章

    • 酷狗音乐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/Api/qqtx.php/?qq=1766679359

      2345和360修改太厉害,现在都不想给...

    • 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

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

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

      回复了全力以赴:已发送

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

      感谢大佬!麻烦您啦! 模板地址:htt...

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

      感谢大佬!麻烦您啦! 模板地址:htt...

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

      回复了韩俊:万分感谢!!!

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

      回复了Moen:已发送

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

      回复了慕子訓Chester:已发送

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

    • 本站管理:1位
    • 用户总数:601位
    • 置顶文章:0篇
    • 日志总数:1236篇
    • 微语总数:79条
    • 评论总数:449条
    • 标签总数:82条
    • 页面总数:9页
    • 分类总数:14个
    • 链接总数:41条
    • 运行天数:3066天
    • 最后更新:9月19日
    • 登录
    • 注册
    • 找回
    Copyright © 2023vip共享吧网站地图 网站备案豫ICP备19004194号-1

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

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

    大家都在搜

    • 威客平台
    • 喜马拉雅FM会员账号
    • 千图网会员账号共享
    • 飞卢小说会员账号
    • 掌阅会员账号
    • javascript教程
    • 腾讯VIP账号共享
    • 搜狐视频会员账号
    • 全民娱乐
    • meilisearch
    • 起点账号共享
    • 起点vip账号共享
    • 土豆vip账号共享
    • pptv
    • 暴风影音会员账号
    • 掌阅vip账号共享
    • 
    • 