当前位置:首页 » 《随便一记》 » 正文

Dockerfile命令详解之 RUN(一)

15 人参与  2023年05月06日 17:29  分类 : 《随便一记》  评论

点击全文阅读


        许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。
专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html

        指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用至官方文档>>>) 

语法

#  该命令以shell形式运行,Linux默认为/bin/sh -c, Windows默认为cmd /S /CRUN <command>

 或者

# exec格式,由于exec格式会被解析成为json数组,所以,必须使用双引号RUN ["executable", "param1", "param2"]

        使用RUN指令都会在当前镜像最顶层生成新的层,并提交到执行结果。Dockerfile中的后续步骤可以使用提交的结果。由于每次使用RUN指令都会生成新的层,所以建议多个Shell在同一个RUN指令中声明。例如:

Dockerfile

FROM alpine# 由于RUN指令在liunx平台上默认以shell命令执行,所以可以省略/bin/sh -cRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesRUN apk add --no-cache  tini tzdata ttf-dejavu fontconfig

        两个RUN指令会生成两个新层 (RootFS中显示由三个层级是因为其中有一个层级FROM引入的基础层)

ade5df802d1c4371892b28713b35a1e7.png

070158f5fcf142f085de93fd9fe31f0d.png

          再次构建的时候,就会直接从cache中获取

6011f509f13b486ebd22b5acbc23c9d7.png

         由于每次使用ADD、COPY、RUN指令都会生成新的层,会导致层数过多,镜像文件增大,所以上面的RUN指令,我们可以合并为一条,其中 \ 为换行符,多个shell命令之间用 && 连接

FROM alpine# 由于RUN指令在liunx平台上默认以shell命令执行,所以可以省略/bin/sh -cRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk add --no-cache  tini tzdata ttf-dejavu fontconfig# 上面的语句等同于RUN /bin/sh -c "sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk add --no-cache  tini tzdata ttf-dejavu fontconfig"

 这样我们可以看到总层数由原来的三层变为了两层

d2103ff541494c35aed6ceacefdb3542.png

f62257866c65483abd24bbdb9d8b9673.png

         如果我们使用第二种命令格式,上面的Dockerfile我们可以写成:

FROM alpineRUN ["/bin/sh","-c","sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk add --no-cache  tini tzdata ttf-dejavu fontconfig"]

        如果容器是以windows平台作为基础镜像,我们可以使用第二种命令格式,执行exe文件。

# 由于exec命令方式最终会解析成json格式,所以我们要将反斜杠转义# 在windows的路径中经常出现反斜杠,这时候我们需要使用双反斜杠进行转义,否则可能出现意料之外的问题RUN ["c:\\windows\\system32\\tasklist.exe"]

 

 

 

[1]  感谢大佬 @kenllf 的斧正

 


点击全文阅读


本文链接:http://zhangshiyu.com/post/61213.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 军训前,童养媳拿我的病历本给心上人叠纸飞机后,我退婚了完结爽文_杨鹤童养媳阿鹤一口气完结_小说后续在线阅读_无删减免费完结_
  • 未婚夫女兄弟把婚车改成宠物灵车,我反手让她的宾利变破烂最新阅读_魏成鸣乔诗诗林书妍小编推荐_小说后续在线阅读_无删减免费完结_
  • 军训当天男友为校花虐功勋犬,重生后我杀疯了潜力榜_顾野杜璇闻言大结局_小说后续在线阅读_无删减免费完结_
  • 天塌了!大佬们全被我捡回家了阿昭,小白,李惊雪小说整本+后续(阿昭,小白,李惊雪)清爽版阅读
  • 重生八零,我笑看真千金用土气布料卖港商免费阅读_妹妹姜雅沈俊爆款_小说后续在线阅读_无删减免费完结_
  • 秦昭:+后续人物讨喜无套路全集手握一把刀,砍翻万道!
  • 狸奴抓伤阿娘后,我和爹提议换个娘后续_阿爹阿娘宁王最新阅读_小说后续在线阅读_无删减免费完结_
  • 盛夏没有晴天小说(阮苏梨,傅屿安,宋颖)小说结尾+隐藏篇章(盛夏没有晴天阮苏梨,傅屿安,宋颖)畅享阅读
  • 全书浏览天降好运?村西头疯婆子是神医!(李萍萍周大孙月娘)_天降好运?村西头疯婆子是神医!(李萍萍周大孙月娘)全书结局
  • 校园星芒爱与科幻的交织(苏然林悦)全书浏览_校园星芒爱与科幻的交织全书浏览
  • 包浆修复师从核到银河(苏星摇豆汁儿于乾)_包浆修复师从核到银河
  • 小说大结局小说风入江云小说已更新+特别篇(柳江云,喜鹊,萧桉)纯净版

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1