Docker笔记:Dockerfile指令

2018-09-21  本文已影响0人  Xpitz

Docker可以通过Dockerfile的指令来自动构建镜像。Dockerfile是一种文本文件,用户可以通过Dockerfile来创建一个自动化的构建。

指令语法

本篇主要介绍和说明Dockefile中的指令语法。

FROM

用法:
FROM <image>[:<tag>] [AS <name>]
FROM <image>[@<digest>] [AS <name>]
说明:

FROM指令用于初始化新的构建阶段并未后续指令设置基本镜像。因此,Dockerfile必须以FROM指令开始。

备注:

RUN

用法:
# shell form
RUN <command>
# exec form
RUN ["executable", "param1", "param2"]
说明:

RUN指令用于在当前镜像上执行指定命令,每运行一条RUN指令,镜像添加新的一层并提交。

备注:
RUN ["/bin/bash", "-c", "echo hello"]
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'
RUN ["c:\\windows\\system32\\tasklist.exe"]
# 实际执行会获取不到$HOME
RUN [ "echo", "$HOME" ]
# 可以在exec form中指定executable
RUN [ "sh", "-c", "echo $HOME" ]

CMD

用法:
# exec form,推荐方式
CMD ["executable","param1","param2"]
# 提供给ENTRYPOINT的默认参数
CMD ["param1","param2"]
# shell form
CMD command param1 param2
说明:

CMD指令的主要目的是为了给启动容器提供默认命令项。在Dockerfile中只能有一个CMD指令。如果有多个CMD,只有最后一条会生效。

备注:

LABEL

用法:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
说明:

LABEL指令会将元数据添加到镜像,格式为键值对。如果键值中包含空格,需使用引号",换行则使用反斜杠\

备注:

MAINTAINER (弃用)

用法:
MAINTAINER <name>
说明:

MAINTAINER指令用于描述镜像的维护者信息。

备注:

EXPOSE

用法:
EXPOSE <port> [<port>/<protocol>...]
说明:

EXPOSE指令通知Docker容器运行时监听的网络端口。可以指定监听端口的协议,默认为TCP。

备注:

EXPOSE指令不会做端口映射,实际在docker run并指定-p-P时生效。

ENV

用法:
# 单个设置
ENV <key> <value>
# 允许一行设置多个
ENV <key>=<value> ...
说明:

ENV指令用于设置容器的环境变量。指定的环境变量会被后续RUN指令使用,并在容器运行时保持。

ADD

用法:
ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
说明:

ADD指令用于复制指定的<src>到容器中<dest><src>可以是文件、目录或远程文件URL。

备注:

COPY

用法:
COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
说明:

COPY指令用于复制本地主机的<src>到容器中的<dest>

备注:

ENTRYPOINT

用法:
# exec form
ENTRYPOINT ["executable", "param1", "param2"]
# shell form
ENTRYPOINT command param1 param2
说明:

ENTRYPOINT指令用于配置容器启动后执行的命令。

备注:

VOLUME

用法:
VOLUME ["/data"]
说明:

VOLUME指令创建一个可以从本地或其他容器挂载的挂载点,一般存放需要持久化的数据。

备注:
VOLUME ["/var/log/"]
VOLUME /var/log 
VOLUME /var/log /var/db

USER

用法:
USER <user>[:<group>]
USER <UID>[:<GID>]
说明:

USER指令设置启动容器的用户或UID,用户组或GID(可选)。

备注:

WORKDIR

用法:
WORKDIR /path/to/workdir
说明:

WORKDIR指令用于为后续的RUNCMDENTRYPOINT指令设置工作目录。

备注:

ARG

用法:
ARG <name>[=<default value>]
说明:

ARG指令用于设置变量。在docker build创建镜像的时候,使用--build-arg <varname>=<value>来指定参数。

备注:
[Warning] One or more build-args [foo] were not consumed.

ONBUILD

用法:
ONBUILD [INSTRUCTION]
说明:

ONBUILD指令用于设置当前所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。换言之,当这个镜像创建完成后,如果有其他镜像以这个镜像为基础,会先执行这个镜像的ONBUILD指令。

备注:

STOPSIGNAL

用法:
STOPSIGNAL signal
说明:

STOPSIGNAL指令用于设置容器退出时给系统发送的信号。

HEALTHCHECK

用法:
# 在容器内部执行一个命令进行健康检查
HEALTHCHECK [OPTIONS] CMD command
# 取消继承镜像的健康检查
HEALTHCHECK NONE
说明:

HEALTHCHECK指令用于容器监控检查。

备注:

SHELL

用法:
SHELL ["executable", "parameters"]
说明:

SHELL指令允许覆盖shell form命令的默认shell。

备注:

写在后面

上一篇 下一篇

猜你喜欢

热点阅读