基础镜像信息,维护者信息,镜像操作指令和容器启动时执行命令

INSTRUCTION arguments包括FROM MAINTAINER RUN等
1、FROM 指定所创建镜像的基础镜像,如果本地不存在默认去docker hub上下载
格式FROM或者FROM:
任何dockerfile第一提哦啊指令必须为FROM。可同时使用多个FROM(每个镜像一次)创建多个镜像

2、MAINTAINER
维护者信息MAINTAINER
MAINTAINER lili.guo@mljr.com
该信息会写入生成镜像的author属性域中

3、RUN运行指定命令
RUN 或者 RUN [“executable”, “param1” ,”param2”] 后一个指令会被解析为json数组,因为必须使用双引号
前者默认在shell终端运行命令即/bin/sh -c 后者使用exec执行不会启动shell环境

指定其他终端类型可以通过RUN [“/bin/bash” , “-c” ,”echo hello”]

每条RUN指令在当前镜像的基础上执行指定命令,应提交为新的镜像,当命令较长是可以使用\来换行

4、CMD 用来指定启动容器时默认执行的命令
CMD [“executable”, “param1”, “param2”] 使用exec执行,是推荐使用的方式
CMD command param1 param2在/bin/sh中执行,提供给需要交互的应用
CMD [“param1”, “param2”] 提供给ENTRYPOINT默认参数
每个dockerfile只能有一条CMD命令,如果制定了多条,最后一条会被执行
如果用户启动容器时手动制定了运行的命令(作为run的参数)则会覆盖掉CMD指定的命令

5、LABEL
用来指定生成镜像的元数据标签信息
LABEL = = =
例如:
LABEL version=”1.0”
LABEL description=”test”

6、EXPOSE
声明镜像内服务所监听的端口
格式为EXPOSE [….]
例如:
EXPOSE 22 808443
该指令只是起到声明作用,并不会自动完成端口映射

7、ENV
指定环境变量,在镜像生成过程中会被后续RUN命令使用,在镜像启动的容器中也会存在
ENV 或者ENV =
例如:
ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
ENV PATH /usr/local/postgres-PGMAJOR/bin/PATH
指令指定的环境变量在运行时可以被覆盖
如docker run –env = built_image

8、ADD
改命令将复制指定的路径下的内容到容器中的路径
ADD
其中可以是dockerfile所在目录的一个相对路径(文件或者目录),也可以是一个URL,还可以是一个TAR文件(如果是tar文件会自动解压到dest)
dest可以是镜像内的绝对路径或者相对于工作目录的相对路径
ADD *.c /code/

9、COPY
COPY
复制本机src所在目录下的内容到镜像中的dest下,目标路径不存在时会自动创建
当使用本地目录为源目录是,推荐使用COPY

10、ENTRYPOINT
指定镜像的默认入口命令,在启动容器时作为根命令执行,所有传入值作为该命令的参数
ENTRYPOINT [“executable”, “param1”, “param2”] exec调用执行
ENTRYPOINT command param1 param2 shell执行
此时,CMD指令定值将作为根命令的参数
每个dockerfile只能有一个ENTRYPOINT,当指定多个时,只有最后一个被执行
在于行是可以被–entrypoint参数覆盖掉 ducker rum –entrypoint

11、VOLUME
创建一个数据卷挂载点
VOLUME [“/data”]
可以从本地主机或其他容器挂载数据卷,一般用来存放数据库和需要保存的数据等

12、USER
指定运行容器时的用户名或UID,后续的RUN等指令也会使用指定的用户身份
USER daemon
当服务不需要管理员权限时,可以通过该命令指定运行用户,并且可以在之前创建所需要的用户
RUN groupadd -r postgres && useradd -r -g postgres postgres
要临时活的管理员权限可以使用gosu 或者sudo

13、WORKDIR
未后续的RUN CMD 和ENTRYPOINT指令配置工作目录
WORKDIR /path/to/workdir
可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径
例如:
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
/a/b/c

14、ARG
指定一些镜像内使用的参数,例如版本号信息等,这些参数在执行docker build命令时才以–build-arg=格式传入
ARG[=]
则可以用docker build –build-arg=

15、ONBUILD
配置当所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作指令
ONBUILD [INSTRUCTION]
例如:
dockerfile 使用如下内容创建镜像A
[…]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build –dir /app/src [..]
如果基于镜像A创建新的镜像时,新的dockerfile使用 FROM image-A指定基础镜像,会自动执行ONBUILD指令的内容,等价于在后面添加了两条指令
FROM image-A
ADD . /app/src
RUN /usr/local/bin/python-build –dir /app/src [..]