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