美文网首页
dockerfile

dockerfile

作者: G_XM_38d3 | 来源:发表于2020-02-18 12:27 被阅读0次

    dockerfile

    Dockerfile是一个Docker镜像的描述文件。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

    dockerfile.png
    From:基础镜像

    ​ 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个 DockerfileFROM 是必备的指令,并且必须是第一条指令。

    MAINTAINER:维护者信息

    ​ 用于声明作者,并应该放在FROM的后面.

    COPY :文件复制

    ​ 将从构建上下文目录中 <源路径> 的文件/目录 复制到新的一层的镜像内的 <目标路径> 位置。<源路径> 可以是多个,甚至可以是通配符(COPY hom?.txt /mydir/) <目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR 指令来指定)使用copy命令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。在 COPYADD 指令中选择的时候,可以遵循这样的原则,所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD

    RUN :需要执行的命令

    ​ 指令是用来执行命令行命令的。

    WORKDIR :当前工作目录

    ​ 使用WORKDIR指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录

    VOLUME:挂载主机目录

    ​ 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中,为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在 Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。

    LABEL:指定标签

    ​ 为镜像指定标签。LABEL会继承基础镜像种的LABEL,如遇到key相同,则值覆盖。

    ENV:环境变量

    ​ 设置环境变量。无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。

    CMD:容器启动后执行

    Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。CMD 指令就是用于指定默认的容器主进程的启动命令的。shell 格式:CMD<命令> ,exec 格式:CMD ["可执行文件","参数1", "参数2"...]它主要作用是默认的容器启动执行命令

    ENTRYPOINT:容器入口,替代CMD

    Entrypoint用于指定容器镜像的入口程序,或者说根应用

    cmd是默认命令。如果docker run 镜像名 xxx, 则会用xxx覆盖镜像中默认的cmd参数, 如果没有xxx,则使用镜像中默认的cmd作为参数传入

    dockerfile示例:
    #指定基础镜像
    FROM lwieske/java-8:latest
    #标明维护人信息
    MAINTAINER twilightGB
    #测试一下网络环境
    RUN ping -c 1 www.baidu.com
    #数据挂载位置
    VOLUME /tmp
    #对外暴露端口
    EXPOSE 80 9099
    #复制文件
    ADD warn-0.0.1-SNAPSHOT.jar app.jar
    #指定容器镜像的入口程序 镜像启动时启动
    ENTRYPOINT ["java","-jar","/app.jar"]
    

    相关文章

      网友评论

          本文标题:dockerfile

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