Dockfile 的语法

本文详细介绍了Dockerfile的语法,包括在不同操作系统上的RUN指令行为、CMD与ENTRYPOINT的区别、ADD指令的用法以及USER指令。通过示例说明了如何创建镜像,如使用build命令指定Dockerfile并为新镜像命名。
摘要由CSDN通过智能技术生成


Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
Dockerfile 语法
在我们深入讨论Dockerfile之前,让我们快速过一下Dockerfile的语法和它们的意义。
什么是语法?
非常简单,在编程中,语法意味着一个调用命令,输入参数去让应用执行程序的文法结构。这些语法被规则或明或暗的约束。程序员遵循语法规范以和计算机 交互。如果一段程序语法不正确,计算机将无法识别。Dockerfile使用简单的,清楚的和干净的语法结构,极为易于使用。这些语法可以自我释义,支持注释。
Dockerfile 语法示例:
Dockerfile语法由两部分构成,注释和命令+参数:
# Line blocks used for commenting
command argument argument ..
一个简单的例子:
# Print "Hello docker!"
RUN echo "Hello docker!"

Dockerfile命令
Dockerfile有十几条命令可用于构建镜像,下文将简略介绍这些命令:
1.FROM ,该命令指定基于哪个基础镜像,因为你要指定一个基础镜像才能基于这个镜像之上进行其他操作,因为你不可能凭空创建出一个镜像吧,如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像,而且DockerFile第一条必须为From指令。如果同一个DockerFile创建多个镜像时,可使用多个From指令(每个镜像一次):

语法:
FROM <image>
FROM <image>:<tag>
FROM <image>:<digest>
三种写法,其中<tag>和<digest> 是可选项,如果没有选择,那么默认值为latest
例如:
FROM centos
FROM centos:latest
2.MAINTAINER ,指定作者信息:

格式:
MAINTAINER <name>
例如:
MAINTAINER test test @example.com
3.RUN ,镜像操作指令:

格式:
1. RUN <command>
2. RUN ["executable", "param1", "param2"]
第一种后边直接跟shell命令
  • 在linux操作系统上默认 /bin/sh -c
  • 在windows操作系统上默认 cmd /S /C
第二种是类似于函数调用。
可将executable理解成为可执行文件,后面就是两个参数。
两种写法比对:
  • RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME
  • RUN ["/bin/bash", "-c", "echo hello"]
注意:多行命令不要写多个RUN,原因是Dockerfile中每一个指令都会建立一层.
 多少个RUN就构建了多少层镜像,会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错。
RUN书写时的换行符是\
例如:
RUN yum install httpd
RUN [ "/bin/bash" , "-c" , "echo hello" ]
4.CMD  
功能为容器启动时要运行的命令
语法有三种写法
1. CMD ["executable","param1","param2"]
2. CMD ["param1","param2"]
3. CMD command param1 param2
第三种比较好理解了,就时shell这种执行方式和写法
第一种和第二种其实都是可执行文件加上参数的形式
 
举例说明两种写法:
  • CMD [ "sh", "-c", "echo $HOME"
  • CMD [ "echo", "$HOME" ]
补充细节:这里边包括参数的一定要用双引号,就是",不能是单引号。千万不能写成单引号。
原因是参数传递后,docker解析的是一个JSON array
有三种格式:
CMD [ "executable" , "param1" , "param2" ]
CMD command param1 param2
CMD [ "param1" , "param2" ]
RUN和CMD看起来挺像,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值