Dockerfile指令

Dockerfile:把镜像定制每一层添加的配置写入一个文件中,用这个脚本文件构建、定制镜像。可以解决无法重复的问题、镜像透明性问题、体积问题

1、FROM:指定基础镜像,指定基于哪个镜像来构建新的镜像,FROM命令必须为dockerfile文件的第一行

语法格式:

FROM <image> 
FROM <image>:<tag>     #<tag>为可选项,没有指定的话就使用latest
eg:
FROM ubuntu:latest

2、RUN:执行命令。构建镜像时运行的shell命令

语法格式:

RUN <command>
RUN ["excutable","parent1","parent2"...]

说明:dockerfile每一指令都会建立一层,RUN也是。多少个RUN就会构建多少层镜像。但由于多个RUN会使得镜像非常臃肿,多层镜像会增加部署的时间,还很容易出错。所以在写Dockerfile的时候,要尽量避免使用多个RUN,尽量将需要执行的命令卸载一个RUN。多条命令可使用\换行,换行前加上&&。还有需要将不需要的文件及目录删除,比如安装包、临时目录等,减少容器大小

3、MAINTAINER命令:用于声明作者

语法格式:

MAINTAINER [作者信息]

4、ENV:定义环境变量、永久变量,容器运行后仍然有效,即容器的永久变量

语法格式:

ENV <key> <value>    #设置一个环境变量
ENV <key1>=<value1> <key2>=<value2> ...    #设置多个环境变量

5、ARG:定义参数,即临时变量、只限于构建镜像时使用,容器运行后不会存在

语法格式:

ARG <参数名>    #不设置默认值的话,需要使用--build-arg来设置参数的值
ARG <参数名>[=<默认值>]    #设置参数的默认值

6、WORKDIR:指定工作目录,以后各层指令的当前目录就是此目录

语法格式:

WORKDIR <工作目录路径>

7、COPY:将上下文目录中的文件或目录复制到镜像内指定的目录下

 语法格式:

COPY <源路径>... <目标路径>
COPY ["<源路径1>",... "<目标路径>"]

注:源路径是一个压缩文件的话,将会解压到容器的目标路径下;原路径是一个URL路径的话,会下载或者解压到容器的目标路径之下

8、VOLUME:将本地卷挂载在容器中

语法格式:

VOLUME <路径>
VOLUME ["<路径1>","<路径2>"...]

注:容器使用的是AUFS,这种文件系统不能持久化数据。当容器关闭后,所有的更改都会丢失。当数据需要持久化的时候使用VOLUME指令,响挂载目录写入的任何信息都不会写入容器存储层,从而保证了容器存储层的无变化

10、EXPOSE:声明容器运行时提供的服务端口
语法格式:

EXPOSE <端口1> [<端口2>...]

注:docker run命令可使用-p <宿主端口>:<容器端口>将声明的端口映射到本地指定的端口。

11、USER:指定运行的用户,以后各层的RUN、CMD或者ENTRYPOINT等指令都会以这个用户身份执行

语法格式:

USER <用户名>
USER <UID>

12、CMD:容器运行时执行的shell命令,CMD指令一般应为Dockerfile文件的最后一行

语法格式:

CMD <命令>
CMD ["可执行文件", "参数1", "参数2"...]

13、ENTRYPOINT:容器运行时执行的shell命令,一般应为Dockerfile文件的最后一行

语法格式:

ENTRYPOINT <命令>
ENTRYPOINT ["可执行文件", "参数1", "参数2"...]

注:与CMD不同的是,当指定了ENTRYPOINT后,CMD不再是直接运行命令,而是将CMD的内容作为参数传给ENTRYPOINT指令。

14、HEALTHCHECK:容器健康状态检查指令

语法格式:

HEALTHCHECK [选项] CMD <命令>
HEALTHCHECK NONE   #如果基础镜像有健康检查指令,使用这行可以取消健康检查指令
HEALTHCHECK的选项有:
--interval=<间隔>:两次健康检查的间隔时间,默认为30秒
--timeout=<时长>:每次检查的超时时间,超过这个时间,本次检查就视为失败,默认30秒
--retries=<次数>:指定健康检查的次数,默认3次,如果指定次数都失败后,则容器的健康状态为unhealthy(不健康)

CMD命令的返回值决定了本次健康检查是否成功,命令的返回值如下:
 0: success - 成功 1: unhealthy - 失败 2: reserved - 保留
如果镜像添加了健康状态检查,容器运行后,在STATUS下会显示健康状态。

15、ONBUILD:指定以当前镜像为基础镜像构建的下一级镜像运行的命令

语法格式:

ONBUILD <其它指令>

注:在当前镜像构建时不会执行,只有以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值