天天看点

Dockerfile详解(二)

Dockerfile文件详解

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取<code>Dockerfile</code>中的指令自动生成映像。

<code>docker build</code>命令用于从Dockerfile构建映像。可以在<code>docker build</code>命令中使用<code>-f</code>标志指向文件系统中任何位置的Dockerfile。

例:

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以<code>#</code>字符开头则被视为注释。可以在Docker文件中使用<code>RUN</code>,<code>CMD</code>,<code>FROM</code>,<code>EXPOSE</code>,<code>ENV</code>等指令。

在这里列出了一些常用的指令。

FROM:指定基础镜像,必须为第一个命令

Dockerfile详解(二)
Dockerfile详解(二)

MAINTAINER: 维护者信息

RUN:构建镜像时执行的命令

Dockerfile详解(二)
Dockerfile详解(二)

ADD:将本地文件添加到容器中,tar类型文件会自动解压,可以访问网络资源,类似wget

Dockerfile详解(二)
Dockerfile详解(二)

COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

CMD:构建容器后调用,也就是在容器启动时才进行调用。

Dockerfile详解(二)
Dockerfile详解(二)

ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

Dockerfile详解(二)
Dockerfile详解(二)

LABEL:用于为镜像添加元数据

ENV:设置环境变量

Dockerfile详解(二)
Dockerfile详解(二)

EXPOSE:指定于外界交互的端口

Dockerfile详解(二)
Dockerfile详解(二)

VOLUME:用于指定持久化目录

Dockerfile详解(二)
Dockerfile详解(二)

WORKDIR:工作目录,类似于cd命令

Dockerfile详解(二)
Dockerfile详解(二)

USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

Dockerfile详解(二)

 格式:

  USER user

  USER user:group

  USER uid

  USER uid:gid

  USER user:gid

  USER uid:group

 示例:

  USER www

 注:

  使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT都将使用该用户。镜像构建完成后,通过<code>docker run</code>运行容器时,可以通过-u参数来覆盖所指定的用户。

Dockerfile详解(二)

ARG:用于指定传递给构建运行时的变量

ONBUILD:用于设置镜像触发器

Dockerfile详解(二)
Dockerfile详解(二)

以下是一个小例子:

Dockerfile详解(二)
Dockerfile详解(二)

最后用一张图解释常用指令的意义^-^

Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)
Dockerfile详解(二)

继续阅读