美文网首页
Dockerfile手册

Dockerfile手册

作者: 鹏鹏他爸 | 来源:发表于2019-03-26 08:36 被阅读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指令两种形式:

    • RUN <command>
    • RUN ["executable", "param1", "param2"]
    CMD

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

    • CMD ["executable","param1","param2"] (exec form, 这种是推荐的形式)
    • CMD ["param1","param2"] (作为 ENTRYPOINT的默认参数)
    • CMD command param1 param2 (shell form)
    LABEL
    EXPOSE
    ENV
    ADD
    COPY
    ENTRYPOINT
    VOLUME
    USER
    WORKDIR
    ARG
    ONBUILD
    STOPSIGNAL
    HEALTHCHECK
    SHELL

    相关文章

      网友评论

          本文标题:Dockerfile手册

          本文链接:https://www.haomeiwen.com/subject/cyswvqtx.html