俩种方式:更新镜像dockercommit构建镜像dockerbuild更新镜像 先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用dockercommit命令提交为一个新的镜像(以tomcat为例)。根据基础镜像,创建容器dockerrunnametom1p80:8080dtomcat修改容器内容dockerexecittom1binbashcdwebappsROOTrmfindex。jspechohelloworldindex。htmlexit提交为新镜像在本地生成dockercommitm描述消息a作者容器ID或容器名镜像名:TAGdockercommitm修改了首页ajimmytom1jimmytomcat:v1。0使用新镜像运行容器dockerrunnametom2p8080:8080djimmytomcat:v1。0构建镜像 构建镜像需要使用DockerfileDockerfifile常用指令FROMFROM指令是最重要的一个并且必须为Dockerfifile文件开篇的第一个非注释行,用于为镜像文件构建过程指定基础镜像,后续的指令运行于此基础镜像提供的运行环境。这个基础镜像可以是任何可用镜像,默认情况下dockerbuild会从本地仓库找指定的镜像文件,如果不存在就会从DockerHub上拉取。FROMFROM:FROMMAINTAINERDockerfifile的制作者提供的本人详细信息。Dockerfifile不限制MAINTAINER出现的位置,但是推荐放到FROM指令之后MAINTAINER可以用LABLE替代LABEL给镜像指定各种元数据LABEL。。。COPY用于从宿主机复制文件到创建的新镜像文件。COPY。。。COPY〔,。。。〕:要复制的源文件或者目录,可以使用通配符:目标路径,即正在创建的image的文件系统路径;建议使用绝对路径,否则COPY指令则以WORKDIR为其起始路径a。必须是build上下文中的路径,不能是其父目录中的文件b。如果是目录,则其内部文件或子目录会被递归复制,但目录自身不会被复制c。如果指定了多个,或在中使用了通配符,则必须是一个目录,则必须以符号结尾d。如果不存在,将会被自动创建,包括其父目录路径ADD基本用法和COPY指令一样,ADD支持使用TAR文件和URL路径。ADD。。。ADD〔,。。。〕add会自动解压压缩包WORKDIR用于为Dockerfifile中所有的RUN、CMD、ENTRYPOINT、COPY和ADD指定设定工作目录,只会影响当前WORKDIR之后的指令。WORKDIRVOLUME用来创建挂载点,可以挂载宿主机上的卷或者其他容器上的卷VOLUMEVOLUME〔〕EXPOSE用于给容器打开指定要监听的端口以实现和外部通信EXPOSE〔〕〔〔〕。。。〕ENV用来给镜像定义所需要的环境变量,并且可以被Dockerfifile文件中位于其后的其他指令(如ENV、ADD、COPY等)所调用,调用格式:variablename或者{variablename}ENVENV。。。ARG指定一个变量,可以在dockerbuild创建镜像的时候,使用buildarg来指定参数ARG〔〕RUN用来指定dockerbuild过程中运行指定的命令RUN:参数一般是一个shell命令,以binshc来运行它RUN〔,,〕:参数是一个JSON格式的数组,当中是要运行的命令,后面是传递给命令的选项或者参数;CMD容器启动时运行的命令CMDCMD〔,,〕CMD〔,〕RUN和CMD区别:RUN指令运行于镜像文件构建过程中,CMD则运行于基于Dockerfifile构建出的新镜像文件启动为一个容器的时候CMD指令的主要目的在于给启动的容器指定默认要运行的程序,且在运行结束后,容器也将终止;不过,CMD命令可以被dockerrun的命令行选项给覆盖Dockerfifile中可以存在多个CMD指令,但是只有最后一个会生效ENTRYPOINT类似于CMD指令功能,用于给容器指定默认运行程序ENTRYPOINTENTRYPOINT〔,,〕ONBUILD用来在Dockerfifile中定义一个触发器ONBUILDDockerfifile用来构建镜像文件,镜像文件也可以当成是基础镜像被另外一个Dockerfifile用作FROM指令的参数在后面这个Dockerfifile中的FROM指令在构建过程中被执行的时候,会触发基础镜像里面的ONBUILDONBUILD不能自我嵌套,ONBUILD不会触发FROM和MAINTAINER指令在ONBUILD指令中使用ADD和COPY要小心,因为新构建过程中的上下文在缺少指定的源文件的时候会失败实例使用dockerfile构建自己的镜像找到一个目录mkdirusrlocaldockerfile将tomcat。tar。gz和jdk。tar。gz压缩文件上传至这个文件夹创建Dockerfile文件vimDockerfile写入内容:FROMcentos:7LABELauthorjimmy挂载VOLUME〔data1〕解压文件ADDapachetomcat7。0。92。tar。gzusrlocalADDjdk8u60linuxx64。tar。gzusrlocal环境变量ENVJAVAHOMEusrlocaljdk1。8。060ENVCLASSPATH。:JAVAHOMElibENVCATALINAHOMEusrlocalapachetomcat7。0。92ENVPATHPATH:JAVAHOMEbin:CATALINAHOMEbin暴露端口EXPOSE8080指定工作目录WORKDIRCATALINAHOME执行命令RUNyuminstallyvim容器默认启动程序ENTRYPOINT〔catalina。sh,run〕保存Dockerfile,然后执行dockerbuild。注意最后一个。这个表示当前目录不可省略dockerbuildtjimmytomcat7。0。92:v1。