Dockerfile手册

2019-03-26  本文已影响0人  鹏鹏他爸

Dockerfile的使用方式

build context是一些特定位置的文件的集合,包括PATH或者URL指定的位置。PATH是文件系统上的一个目录。URL则是Git仓库的位置。context是递归处理的,因此PATH会包含其子目录。URL也会包含它的仓库和子模块。例如如下命令就是把当前路径作为context。

$ docker build .
Sending build context to Docker daemon  6.51 MB
...

build命令是由Docker daemon运行的,而不是CLI。因此build进程首先要将整个context(递归地)发给daemon。大部分情况下,你可以将一个空目录作为上下文,该目录中只包含一个Dockfile。然后只将需要加到新镜像中的文件放到该目录中。要保持改目录中的文件尽量少。

警告:不要把根目录“/” 作为构建image的PATH, 这将会把你的整个操作系统磁盘都作为context发给Docker daemon.

如果在docker builder中没有指定,默认情况下,会读取context中的Dockerfile来构建image。也可以通过-f 选项来指定某个位置的某个文件来构建,例如:

$ docker build -f /path/to/a/Dockerfile .

可以指定构建成功后,将新的docker image存放到一个或多个仓库中,或者多个别名和版本,这通过-t选项实现:

$ docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .

以上例子是用两个-t,指定多个版本号。

Docker daemon会按顺序依次执行Dockerfile中的指令,每条指令执行完,就commit到新镜像中。全部执行完成后就清理掉发送给Daemon中的Context(不是文件系统上的context,目录中的文件还是在的)。

注意每个指令是独立的,并且会新建一层镜像。因此RUN cd /tmp 这个指令,并不会影响下一条指令。

格式

解析指令(Parser directives)

指令

FROM

指定基础镜像

RUN

在新的层上运行命令。命令运行结果将会创建一个新的image,作为Dockerfile下一步的运行的基础。
RUN指令两种形式:

CMD

一个Dockfile中只有一个CMD是生效的,如果有多个,只有最后一个生效。这个指令的作用是用于指定容器运行时(docker run),默认要执行的命令。
CMD有三种形式:

LABEL
EXPOSE
ENV
ADD
COPY
ENTRYPOINT
VOLUME
USER
WORKDIR
ARG
ONBUILD
STOPSIGNAL
HEALTHCHECK
SHELL
上一篇下一篇

猜你喜欢

热点阅读