文章

Dockerfile常用指令

构建类指令

  • 用于构建image
  • 操作不会在运行image的容器上执行(FROM MAINTAINER RUN ENV ADD COPY)

设置类指令

  • 用于设置image的属性
  • 操作将在运行image的容器内执行(CMD ENTRYPOINT USER EXPOSE VOLUME WORKDIR ONBUILD)

列表

指令 描述
FROM 基于基础镜像构建新镜像
LABEL 标签
RUN 构建镜像时运行的Shell命令
COPY 拷贝文件或目录到镜像中
ADD 解压压缩包并拷贝
EVN 设置环境变量
USER 为RUN、CMD和EXTRYPOINT指定运行用户
EXPOSE 声明容器运行的服务端口
WORKDIR 为RUN、CMD和EXTRYPOINT指定工作目录
CMD 运行容器时默认执行 如果有多个CMD指令,最后一个生效

示例

FROM

FROM <image>:<version>

例如:

FROM ubuntu:latest

RUN

RUN 有两种格式

  • shell格式

RUN <命令>

  • exce格式

RUN ["可执行文件","参数一","参数二" ...]

优化:当有多条要执行的命令,不要使用多个RUN,尽量使用&&和\符号来连接成一行。

CMD

CMD 格式有三种

CMD  ["可执行文件","参数一","参数二" ...]
CMD  ["参数一","参数二". ..]
CMD  command  "参数一" "参数二" ...

如果有多个CMD指令,最后一个生效

EXPOSE

EXPOSE <port> [<port>...]

ENV

ENV <key> <value> 或 ENV <key>=<value>

ADD

ADD src dest

src可以不是本地文件 可以是网络url

COPY

COPY src dest

src 只能是本地文件

ENTRYPOINT

ENTRYPOINT ["可执行文件","参数一","参数二" ...]
ENTRYPOINTcommand  "参数一" "参数二" ...

与 CMD 不同点是,如果用户在启动容器时,指定了运行命令,ENTRYPOINT不会被运行的命令覆盖

ENTRYPOINT的最佳实践是使用ENTRYPOINT定义镜像主命令,并通过CMD定义主要参数。

VOLUME

VOLUME ["<mountpoint>"]

USER

USER <username>|<UID>

WORKDIR

WORKDIR /root

License:  CC BY 4.0