FROM
指定基础镜像
LABEL
设置key=value键值对
LABEL maintainer=“yzchen engyzchen@foxmail.com”
RUN
执行shell指令
- 设置本地时间
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR
WORKDIR 容器内的相对位置
例如:
WORKDIR /app
COPY File1 File1 在/app/File1
WORKDIR path1
WORKDIR path2
当前目录为: /app/path1/path2
COPY
复制宿主机的文件到容器中(Dockerfile当前目录)
COPY src target
ADD
- 自动解压缩 xz\gzip\bzip2
- 下载文件权限默认是600
CMD
- 启动容器执行的命令
CMD[ cmd , param1, param2] - cmd需要默认命令的全路径
CMD[ ‘executable’ , param1, param2] - 给 ENTRYPOINT提供参数
CMD[ param1, param2 ]
ENTRYPOINT
启动后执行的命令以及参数
ENV
设置环境变量
例如给go设置环境变量
ENV GOPROXY=https://goproxy.cn
ENV TZ=Asia/Shanghai
ENV GO111MODULE=on
ARG
设置环境变量 优先级ENV > ARG
例如给go设置环境变量
ARG GOPROXY=https://goproxy.cn
ARG TZ=Asia/Shanghai
ARG GO111MODULE=on
VOLUME
VOLUME["容器目录1","容器目录2"]
tip: 与-v的区别
-v 可以指定宿主机的目录
VOLUME 无法指定宿主机目录 docker inspect 查看挂载目录
EXPOSE
暴露容器的端口,外部需要-p调用
EXPOSE <端口1> [<端口2>...]
HEALTHCHECK
健康检查
HEALTHCHECK --interval=5s --timeout=3s
HEALTHCHECK [选项] CMD <命令> #设置检查容器健康状况的命令
HEALTHCHECK NONE #如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
HEALTHCHECK 支持下列选项:
--interval=<间隔> :两次健康检查的间隔,默认为 30 秒;
--timeout=<时长> :健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;
--retries=<次数> :当连续失败指定次数后,则将容器状态视为 unhealthy ,默认 3次。