dockerfile基本语法讲解

1、FROM

基础镜像,必须是可以下载的

2、MAINTAINER

指定镜像的作者信息

3、RUN

指定当前镜像在构建过程中需要运行的命令

示例:

指定nginx在容器启动时自动启动服务

RUN ["/usr/sbin/nginx","-g","daemon off;"]

4、EXPOSE

声明端口使用

  • 声明镜像的守护端口,方便容器的服务映射,也可以指定多个端口

5、CMD

类似于RUN,两者的运行时间点有所不同

  • CMD在docker run时运行
  • RUN是在docker build构建镜像的时候运行的
  • CMD可以在docker run指定要运行的程序所覆盖

6、ENTERPOINT

类似于CMD,但其不会被docker run的命令参数所覆盖,如果在运行容器时使用了--enterpoint选项,会覆盖ENTERPOINT所指定的程序

优点:在执行docker run 的时候可以指定ENTRYPOINT运行所需要的参数

缺点:如果Dockerfile中存在多个ENTERPOINT指令,仅最后一个生效

7、COPY

复制,从宿主机复制文件或者目录到容器中指定的路径

[--chown=<user>:<group>]:可选参数,可以改变复制到容器内文件的拥有者和数组

8、ADD

ADD和COPY的使用格式一致

官方推荐使用COPY

不同:

ADD在执行源文件为压缩文件的时候会自动复制并解压到容器内

在不解压的情况下,ADD无法复制压缩文件,会使得镜像构建失效,从而导致镜像构建缓慢,可以根据需要来决定

如果单纯复制文件的话还是来使用COPY

9、VOLUME

数据卷,在启动的时候如果忘了挂载数据卷,会自动挂在u到匿名卷

优点:

  • 避免重要数据在容器重启的时候丢失
  • 避免容器的不断扩大

10、WORKDIR

指定工作目录,会在构建镜像的每一层中都会存在,WORKDIR指定的目录,必须是提前创建好的

11、ENV

设置环境变量

12、USER

指定执行后续命令的用户和用户组

13、ONBUILD

用于延迟构建命令执行

为镜像添加触发器

当一个镜像被其他镜像作为基础镜像时需要写上OBNBUILD

会在构建时出入触发器指令

14、LABEL

给镜像添加一些元数据,以键值对的形式

15、HEALTHCHECK

用来指定某个程序或者指令来监控docker容器服务的运行状态

16、ARG

构建参数与ENV作用一致,作用域不一样,ARG设置的环境变量仅仅对Dockerfile内有效,也就是在只有docker build的过程中有效,构建好的镜像内不存在此环境变量。

发表评论

后才能评论