镜像管理类 Dockerfile基本语法 FROM: 指定待扩展的父级镜像(基础镜像)。除注释之外,文件开头必须是一个FROM指令,后面的指令便在这个父级镜像的环境中运行,直到遇到下一个FROM指令。通过添加多个FROM命令,可以在同一个Dockerfile文件中创建多个镜像。 MAINTAINER: 声明创建镜像的作者信息:用户名、邮箱,非必须参数。 RUN: 修改镜像的命令,常用来安装库、安装程序以及配置程序。一条RUN指令执行完毕后,会在当前镜像上创建一个新的镜像层,接下来的指令会在新的镜像上继续执行。RUN 语句有两种形式: RUN yum update :在/bin/sh路径中执行的指令。 RUN ["yum", "update"] :直接使用系统调用exec来执行。 RUN yum update && yum install nginx :使用&&符号将多条命令连接在同一条RUN语句中。 EXPOSE: 指明容器内进程对外开放的端口,多个端口之间使用空格隔开。 运行容器时,通过设置参数 P (大写)即可将EXPOSE里所指定的端口映射到主机上其他的随机端口,其他容器或主机可以通过映射后的端口与此容器通信。 您也可以通过设置参数 p (小写)将Dockerfile中EXPOSE中没有列出的端口设置成公开。 ADD: 向新镜像中添加文件,这个文件可以是一个主机文件,也可以是一个网络文件,也可以是一个文件夹。 第一个参数:源文件(夹)。 如果是相对路径,必须是相对于Dockerfile所在目录的相对路径。 如果是URL,会将文件先下载下来,然后再添加到镜像里。 第二个参数:目标路径。 如果源文件是主机上的zip或者tar形式的压缩文件,容器引擎会先解压缩,然后将文件添加到镜像的指定位置。 n 如果源文件是一个通过URL指定的网络压缩文件,则不会解压。 VOLUME: 在镜像里创建一个指定路径(文件或文件夹)的挂载点,这个容器可以来自主机或者其它容器。多个容器可以通过同一个挂载点共享数据,即便其中一个容器已经停止,挂载点也仍可以访问。 WORKDIR: 为接下来执行的指令指定一个新的工作目录,这个目录可以是绝对目录,也可以是相对目录。根据需要,WORKDIR可以被多次指定。当启动一个容器时,最后一条WORKDIR指令所指的目录将作为容器运行的当前工作目录。 ENV: 设置容器运行的环境变量。在运行容器的时候,通过设置e参数可以修改这个环境变量值,也可以添加新的环境变量。 例如: docker run e WEBAPPPORT8000 e WEBAPPHOSTwww.example.com ... CMD: 用来设置启动容器时默认运行的命令。 ENTRYPOINT: 用来指定容器启动时的默认运行的命令。区别在于:运行容器时添加在镜像之后的参数,对ENTRYPOINT是拼接,CMD是覆盖。 若在Dockerfile中指定了容器启动时的默认运行命令为 ls l ,则运行容器时默认启动命令为 ls l ,例如: ENTRYPOINT [ "ls", "l"] :指定容器启动时的程序及参数为 ls l 。 docker run centos :当运行centos容器时,默认执行的命令是docker run centos ls l docker run centos a :当运行centos容器时拼接了a参数,则默认运行的命令是docker run centos ls l a 若在Dockerfile中指定了容器启动时的默认运行命令为 entrypoint ,则在运行容器时如果需要替换默认运行命令,可以通过添加entrypoint参数来替换Dockerfile中的指定。例如: docker run gutianlangyu/test entrypoint echo "hello world" USER: 为容器的运行及RUN、CMD、ENTRYPOINT等指令的运行指定用户或UID。 ONBUILD: 触发器指令。构建镜像时,容器引擎的镜像构建器会将所有的ONBUILD指令指定的命令保存到镜像的元数据中,这些命令在当前镜像的构建过程中并不会执行。只有新的镜像使用FROM指令指定父镜像为当前镜像时,才会触发执行。 使用FROM以这个Dockerfile构建出的镜像为父镜像,构建子镜像时: ONBUILD ADD . /app/src :自动执行ADD . /app/src