dockerfile指令

1.FROM

1
2
#指定所创建镜像的基础镜像,如果本地不存在,则默认去镜像仓库下载指定镜像  
FROM <image>:<tag>

2.MAINTAINER

1
2
#指定维护者信息  
MAINTAINER [xxx@xxx.com](mailto:xxx@xxx.com)

3.RUN

1
2
3
4
#镜像制作过程中,在可写层执行指定命令  
RUN <command>
#默认在 shell 终端中运行命令,即 /bin/sh -c;
#RUN ["executable","param1","param2"] 会被解析成Json数组,因此必须要用"",可指定使用其他终端类型,如 RUN ["/bin/bash","-c","echo helloworld"]

4.CMD

1
2
3
4
5
6
7
#指定启动容器时默认执行的命令,一般用于执行服务启动脚本。每个 Dockerfile 只能有一条 CMD 指令,如果指定了多条,只有最后一条会生效,并且 docker run 接的命令会覆盖掉 CMD 指令的内容。支持三种格式:  
CMD ["executable","param1","param2"]
#使用 exec 执行
CMD command param1 param2
#在 /bin/sh 中执行,提供给需要交互的应用
CMD ["param1","param2"]
#提供给 ENTRYPOINT 的默认参数

5.LABEL

1
2
#用来指定生成镜像的元数据标签信息  
LABEL <key>=<value>

6.EXPOSE

1
2
#声明镜像内服务侦听的端口  
EXPOSE 22 80 443

7.ENV

1
2
3
#指定环境变量,在镜像生成过程中会被后续 RUN 指令使用,在容器中也会存在,若同时使用 docker run --env,那么 ENV 声明的变量将会被覆盖  
ENV <key> <value>
ENV <key>=<value>

8.ADD

1
2
#复制指定的<src>路径下的内容到容器中的<dest>路径下  
ADD <src> <dest>

9.COPY

1
2
3
4
5
6
#和 ADD 一样,复制指定的<src>路径下的内容到容器中的<dest>路径下  
COPY <src> <dest>

#二者的区别在于:
#ADD 的 <src> 可以为 URL
#ADD 到 容器 的 tar 文件会被自动解压,并删除原 tar 文件

10.ENTRYPOINT

1
2
3
4
5
#指定镜像的默认入口命令,该命令会在启动容器时作为根命令执行,每个Dockerfile 中只有有一个 ENTRYPOINT,若指定多个只有最后一个有效。并且 docker run --entrypoint 会覆盖。支持两种参数:  
ENTRYPOINT ["executable","param1","param2"]
#exec 调用执行
ENTRYPOINT command param1 param2
#shell 中执行

11.VOLUME

1
2
#创建一个挂载点  
VOLUME ["/data"]

12.USER

1
2
3
4
#指定运行容器的用户的用户名或UID,后续的 RUN 等指令也会使用指定的用户身份  
USER user
#当服务不需要管理员权限时,可以通过该命令指定运行用户,并且可以在之前创建所需要的用户。
RUN groupadd -r postgres && useradd -r -g postgres postgres

13.WORKDIR

1
2
3
4
5
6
7
#为后续的RUN、CMD和ENTRYPOINT指令配置工作目录。  
#可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
#则最终路径为/a/b/c。

14.ARG

1
2
3
#指定一些镜像内使用的参数,这些参数在执行 docker build 命令时才以 --build-arg <name>=<value> 格式传入  
ARG <name>=<value>
#和 ENV 的区别在于 ARG 定义的环境变量不会保存在容器中

15.ONBUILD

1
2
#配置当所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作指令。  
ONBUILD [INSTRUCTION]

16.STOPSIGNAL

1
2
#指定所创建镜像启动的容器接收退出的信号值。  
STOPSIGNAL signal

17.HEALTHCHECK

1
2
3
4
5
6
7
#配置所启动容器如何进行健康检查(如何判断健康与否),自Docker 1.12开始支持。  
#格式有两种:
#HEALTHCHECK [OPTIONS] CMD command:根据所执行命令返回值是否为0来判断;
#HEALTHCHECK NONE:禁止基础镜像中的健康检查。
--interval=DURATION(默认为:30s):过多久检查一次;
--timeout=DURATION(默认为:30s):每次检查等待结果的超时;
--retries=N(默认为:3):如果失败了,重试几次才最终确定失败。

18.SHELL

1
2
#指定其他命令使用shell时的默认shell类型。  
#默认值为["/bin/sh","-c"]。
# 推荐文章
  1.深刻理解Docker镜像大小
  2.k8s专题[1.k8s基础概念]
  3.k8s专题[10.使用Spinnaker持续发布应用]
  4.k8s专题[2.k8s设计原则]
  5.k8s专题[3.k8s基础组件]

评论


:D 一言句子获取中...